
数组
heda3
拥有超过10年的嵌入式开发经验,新一代信息技术工程师/人工智能博士,已申请发明专利15项,其中8项成功获批授权,并在中英文期刊上发表多篇高水平学术论文。在嵌入式系统、算法开发与技术管理领域,积累了丰富的实践经验,并持续在技术社区分享在嵌入式驱动、操作系统、上位机软件、算法优化等开发过程中遇到的关键问题、创新解决方案以及深刻的技术洞察。持续跟随行业前沿,探索嵌入式开发中的最新动态与突破性技术,共同推动技术进步与创新!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
11.旋转数组的最小数字
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 解法一: 使用二分查找实现 分为两部分:前一个递增子数组 后一个递增子数组 ;两个指针分别指向第...原创 2019-01-31 23:50:01 · 199 阅读 · 0 评论 -
1、 在一个排序的二维数组中,查找某个整数
题目描述 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 解法一: 使用二分法查找实现 class Solution { public: bool Find(int target, vector<vector<int> > a...原创 2018-07-13 22:39:40 · 425 阅读 · 0 评论 -
12.调整数组顺序,使得奇数在前,偶数在后
题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 解法1:创建一个新数组保存偶数;删除原数组中对应的偶数位置;新数组放在原数组的后面 class Solution{ public: void reOrderArray(vector<int>...原创 2019-02-01 09:55:10 · 815 阅读 · 0 评论 -
13.数组中出现次数超过一半的数字
题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。 解法1: 需要O(n)时间,(剑指解法2) 1)它比较的是两两相临近的的数组是否相等,相等则计数1,同时参与比较的这个数num保持不变参与下一次的比较; 2)否则计数为...原创 2019-02-01 12:45:02 · 145 阅读 · 0 评论 -
20.构建乘积数组
题目描述 给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。 题目详情: 也即是Bi对应的位置为1即可,相当于A0*A1...An-1的连乘temp,具体计算Bi的时候将上述的连乘temp除于Ai即可;但是题目要求不能使用除法; 解法...原创 2019-02-03 22:02:59 · 168 阅读 · 0 评论 -
19.找出数组中重复的数字
题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 解法1: 普通解法,逐个查找需要两个循环,时间复杂度O(n^2) 解法2: 哈希表实现 , 时间复杂度O(n)...原创 2019-02-03 18:10:56 · 387 阅读 · 0 评论 -
18.数组中只出现一次的数字
题目描述 一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。 解法: 思路:使用异或 在一个数组里,逐个进行异或,如果该数组内只有一个不重复的数字k,那么异或后的结果就是该不重复的数字k 但是有两个不重复的数字出现呢?该怎么办,如何借鉴单个数字的思路 思路: 1)该数组逐个异或,最后的结果是两个不重复数字的异或结果 例如2和4 0...原创 2019-02-03 16:24:31 · 193 阅读 · 0 评论 -
17.统计一个数字在排序数组中出现的次数
题目描述 统计一个数字在排序数组中出现的次数。 解法1: 普通解法-顺序查找:时间复杂度:O(n) 解法2: 排序数组的查找可以用二分法,怎么用?有多个重复的数字,若是查找的中间数和两边的都相同,那么两边都要找时间复杂度:O(n)。没有利用二分查找的优势 思路转换:将查找的数字转换为查找第一个数字和最后一个数字,依然用二分法查找 时间复杂度:O(logn) 二分法的改进 ...原创 2019-02-03 13:25:20 · 371 阅读 · 0 评论 -
16.数组中的逆序对
题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 输入描述: 题目保证输入的数组中没有的相同的数字 数据范围: 对于%50的数据,size<=10^4 对于%75的数据,size<=10^5 对于%100的数...原创 2019-02-03 10:13:21 · 167 阅读 · 0 评论 -
14.连续子数组的最大和
题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序...原创 2019-02-01 17:05:05 · 161 阅读 · 0 评论 -
15.把数组排成最小的数
题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 解法1: 分为两步走: 1)其中两个数拼接在一起 2)采用排序算法,从小到大排序 关键:自定义一个比较大小的函数,比较两个字符串s1, s2大小的时候,先将它们拼接起来,比较s1+s2,和s2+s1那...原创 2019-02-01 21:07:33 · 216 阅读 · 0 评论