目录

📁 JZ53 数字在升序数组中出现的次数​编辑

📁 JZ4 二维数组中的查找​编辑

📁 JZ11 旋转数组的最小数字

📁 JZ38 字符串的排列​编辑


📁 JZ53 数字在升序数组中出现的次数

        这就是一道简单的模板题,使用二分查找的模板往上套即可。如果对二分还不是很熟悉的,可以看一下我写的这一篇文章,讲解的还是比较基础简单的:【算法杂货铺】二分算法_二分朴素-CSDN博客

#include <limits>
class Solution {
public:int GetNumberOfK(vector<int>& nums, int k) {if(nums.size() == 0)return 0;int left = 0, right = nums.size() - 1;int begin = -1 , end = -1;while(left < right){int mid = (left + right) >> 1;if(nums[mid] < k)left = mid + 1;elseright = mid;}if(nums[left] == k)begin = left;if(begin == -1)return 0;left = 0, right = nums.size() - 1;while(left < right){int mid = (left + right + 1) >> 1;if(nums[mid] > k)right = mid - 1;elseleft = mid;}if(nums[left] == k)end = left;return end - begin + 1;}
};

📁 JZ4 二维数组中的查找

        根据这个二维数组的性质,搜索目标数。

        "每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。"

        我们从左上角开始,面临如下几种情况:

1. target == 当前位置:直接返回true.

2. target > 当前位置:说明比当前行中的所有元素都要大,直接去下一行查找.

3. target < 当前位置:说明当前行可能存在目标元素,去前面的位置查找。因为列是从小到大向下递增的,如果当前行没有,要去下一行查找( target > 当前位置),在下一行中可以直接从当前行的列位置开始。

        行和列必须在指定范围内。

class Solution {
public:bool Find(int target, vector<vector<int> >& array) {int m = array.size(), n = array[0].size();if(m == 0 || n == 0)return false;int row = 0, col = n - 1;while(row < m && col >= 0){if(array[row][col] == target)return true;else if(array[row][col] > target)col--;else++row;}return false;}
};

📁 JZ11 旋转数组的最小数字

        旋转数组后,无非就下面这几种情况:

        将一个有序的数组分成一个或两个有序的数组。

1. mid > right:说明最小节点一定在mid的右侧.

2. mid == right: 不确定,逐渐缩小右边界范围.

3. mid < right: 最小节点一定在mid的左侧.

class Solution {
public:int minNumberInRotateArray(vector<int>& nums) {int l = 0, r = nums.size() - 1;while(l < r){int mid = (l + r) >> 1;if(nums[mid] > nums[r])l = mid + 1;else if(nums[mid] == nums[r])--r;elser = mid;}return nums[l];}
};

📁 JZ38 字符串的排列

        思路就是:将一个字符串str,生成其所有可能的排列(全排列),并返回去重后的结果。

#include <unordered_map>
#include <vector>
class Solution {
public:vector<string> ret;string path;unordered_set<string> s;vector<string> Permutation(string str) {int n = str.size();vector<bool> arr(n + 1 , false);dfs(str, arr);return ret;}void dfs(string str, vector<bool>& arr){if(path.size() == str.size() && s.find(path) == s.end()){ret.push_back(path);s.insert(path);return ;}for(int i = 0 ; i < str.size(); ++i){if(arr[i] == false){arr[i] = true;path += str[i];dfs(str, arr);arr[i] = false;path.pop_back();}}}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/92907.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/92907.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/92907.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ETLCloud批流一体化体现在哪

ETLCloud批流一体化体现在哪 企业对数据处理的实时性、高效性和准确性的要求越来越高。批流一体化作为一种先进的数据处理理念&#xff0c;逐渐被企业所采用。 目前许多国产化ETL工具也装配了十分强大的批流一体化能力&#xff0c;ETLCoud就是一个很好的代表&#xff0c;它能够…

Mybatis学习之缓存(九)

这里写目录标题一、MyBatis的一级缓存1.1、工作原理1.2、一级缓存失效的四种情况1.3、不同的SqlSession对应不同的一级缓存1.4、同一个SqlSession但是查询条件不同1.5、同一个SqlSession两次查询期间执行了任何一次增删改操作1.6、同一个SqlSession两次查询期间手动清空了&…

windows10装Ubuntu22.04系统(双系统)

参考链接&#xff1a;Windows和Linux双系统的保姆级安装教程&#xff0c;新手小白跟着也能装_windows安装linux双系统-CSDN博客 1 前期准备 1.下载Ubuntu22.04.5 的iso镜像文件&#xff1a;Download Ubuntu Desktop | Ubuntu 2.准备一个U盘&#xff08;空&#xff0c;已有文…

Pandas数据处理与分析实战:Pandas数据清洗与处理入门

数据清洗&#xff1a;Pandas数据处理入门 学习目标 本课程将引导学员了解数据清洗的基本概念&#xff0c;掌握使用Pandas库处理数据集中的缺失值、重复数据和异常值的方法&#xff0c;确保数据的质量&#xff0c;为后续的数据分析和机器学习任务打下坚实的基础。 相关知识点 Pa…

Python爬虫实战:研究ScrapyRT框架,构建图书商城数据采集系统

1. 引言 1.1 研究背景 在当今数字化时代,互联网已成为全球最大的信息库,蕴含着海量的有价值数据,涵盖商业、教育、科研、医疗等各个领域。根据 IDC(国际数据公司)预测,到 2025 年全球数据圈将增长至 175ZB,其中网络数据占比超过 60%。这些数据不仅是企业制定商业策略、…

springboot接口请求参数校验

参数校验 参数校验可以防止无效或错误的数据进入系统。通过校验前端输入的参数&#xff0c;可以确保数据的完整性&#xff0c;避免因为缺少必要的信息而导致程序错误或异常。例如&#xff0c;对于密码字段&#xff0c;可以通过校验规则要求用户输入至少8个字符、包含字母和数字…

Docker部署 Neo4j 及集成 APOC 插件:安装与配置完整指南(docker-compose)

Docker部署 Neo4j 及集成 APOC 插件&#xff1a;分步骤指南 摘要 &#xff1a;本文将分两部分详细介绍相关内容。第一部分讲解如何使用 Docker Compose 部署 Neo4j 图数据库&#xff0c;提供完整配置文件及常见问题解决方案&#xff1b;第二部分在前者基础上&#xff0c;介绍 A…

TLSv1.2协议与TCP/UDP协议传输数据内容差异

一、Wireshark中常见的TLSv1.2在用Wireshark抓包时&#xff0c;除了看到课堂上教过的经典的TCP/UDP协议&#xff0c;还有一个协议经常出现——TLSv1.2。并且这个协议的Info解释是Application data&#xff0c;其实看到这个解释&#xff0c;我大概猜出来了TLSv1.2是用来给用户数…

51c自动驾驶~合集14

自己的原文哦~ https://blog.51cto.com/whaosoft/11707335 #Text2LiDAR 文本引导的无条件点云生成新SOTA 论文题目&#xff1a;《Text2LiDAR: Text-guided LiDAR Point Cloud Generation via Equirectangular Transformer》 论文地址&#xff1a;https://arxiv.o…

k8s基本概念

k8s 的基本概念 Kubernetes是一个可以移植、可扩展的开源平台&#xff0c;使用 声明式的配置 并依据配置信息自动地执行容器化应用程序的管理。在所有的容器编排工具中&#xff08;类似的还有 docker swarm / mesos等&#xff09;&#xff0c;Kubernetes的生态系统更大、增长更…

Easysearch 数据迁移之数据比对

上一篇我们通过 INFINI Gateway 进行了索引数据迁移&#xff0c;对索引迁移结果进行了初步且直观的校验--对比索引的文档数是否一致。今天介绍个实实在在的数据比对方法&#xff0c;通过网关对比索引文档的内容在两个集群是否一致。话不多说&#xff0c;就拿上次迁移的两个索引…

Codeforces Round 1042 (Div. 3)

ABCD 略E注意到每个操作最多执行一次&#xff0c;ifa[i]!b[i]&#xff0c;要么a[i]^a[i1]要么a[i]^b[i1]G设消除1~i的数的操作次数为f[i]&#xff0c;可以推出f[i]2*f[i-1]1&#xff0c;那么消除1~i的数的分数乘的数为g[i]&#xff0c;g[i]g[i-1]*g[i-1]*i s虽然很大&#xff0…

AJAX:让你的网页“静悄悄”变聪明,体验丝滑升级

大家好&#xff0c;今天想聊聊一个让网页“活”起来的小秘密——AJAX。你可能遇到过这种情况&#xff1a;点个按钮&#xff0c;页面就刷新&#xff0c;等得心急火燎。但用了AJAX的网站&#xff0c;比如购物车更新或搜索建议&#xff0c;数据嗖嗖就来了&#xff0c;整个页面却纹…

【iOS】Block基础知识和底层探索

文章目录前言Block的声明和创建问题引入Block的底层结构Block的执行流程Block的创建与存储Block的传递与调用Block的捕获机制捕获局部变量捕获全局变量小结Block的类型__block修饰符__block变量的包装结构体block的实例结构体block的执行逻辑Block循环引用造成的原因解决方法小…

1.Ansible 自动化介绍

1-Ansible 自动化介绍 Ansible 自动化介绍 手动执行任务和自动化执行任务 手动执行任务的麻烦事&#xff1a; 很容易漏掉某个步骤&#xff0c;或者不小心执行错步骤&#xff0c;而且很难验证每个步骤是不是真的按预期完成了。管理一大堆服务器时&#xff0c;很容易出现配置…

2025年云手机场景适配的行业观察

2025年的市场中&#xff0c;云手机品牌百花齐放&#xff0c;不同品牌在性能、功能和场景适配性上的差异日益显著。随着云计算技术的快速发展&#xff0c;云手机已从 尝鲜工具 演变为游戏、办公、企业运营等场景的刚需工具。现市面上也有着更多的云手机品牌&#xff0c;结合实测…

Date/Calendar/DateFormat/LocalDate

作用说明Date用于定义时间&#xff0c;提供date对象间的比较方法Calendar(日历类),提供对时间的运算方法DateFormat是接口&#xff0c;它的实现类SimpleDateFormat用来规范时间输出形式LocalDate&#xff0c;在JDK1.8之后引入&#xff0c;方便了对时间的运算方法介绍Date常用方…

在Python 3.8环境中安装Python 3.6兼容包的方法

在Python 3.8环境中安装Python 3.6兼容包的方法 用户的需求是&#xff1a;在Python 3.8环境中重新安装原本为Python 3.6设计的包。这通常涉及兼容性问题&#xff0c;因为Python 3.8可能引入了一些语法或API变更&#xff0c;导致旧包无法直接运行。以下是逐步解决方案&#xff…

三种DuckDB电子表格插件的union all查询性能对比

我选取了最稳定、兼容性最好的三种&#xff1a;官方excel对应函数read_xlsx()、官方spatial对应函数st_read()、rusty_sheet对应函数read_sheet。 1.建立两个包含前50万和后54万的xlsx文件&#xff0c;用于比较。利用官方excel的copy()to进行。 D copy (from v1 order by l_ord…

Python 中使用多进程编程的“三两”问题

文章目录一、简介二、选择合适的启动方式三、手动终止所有的进程小结一、简介 这里简单介绍在Python中使用多进程编程的时候容易遇到的情况和解决办法&#xff0c;有助于排查和规避某类问题&#xff0c;但是具体问题还是需要具体分析&#xff0c;后续会补充更多的内容。 二、…