
数组
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 · 187 阅读 · 0 评论 -
1、 在一个排序的二维数组中,查找某个整数
题目描述在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解法一:使用二分法查找实现class Solution{ public: bool Find(int target, vector<vector<int> > a...原创 2018-07-13 22:39:40 · 407 阅读 · 0 评论 -
12.调整数组顺序,使得奇数在前,偶数在后
题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。解法1:创建一个新数组保存偶数;删除原数组中对应的偶数位置;新数组放在原数组的后面class Solution{public: void reOrderArray(vector<int>...原创 2019-02-01 09:55:10 · 793 阅读 · 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 · 135 阅读 · 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 · 155 阅读 · 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 · 353 阅读 · 0 评论 -
18.数组中只出现一次的数字
题目描述一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。解法:思路:使用异或在一个数组里,逐个进行异或,如果该数组内只有一个不重复的数字k,那么异或后的结果就是该不重复的数字k但是有两个不重复的数字出现呢?该怎么办,如何借鉴单个数字的思路思路:1)该数组逐个异或,最后的结果是两个不重复数字的异或结果例如2和4 0...原创 2019-02-03 16:24:31 · 182 阅读 · 0 评论 -
17.统计一个数字在排序数组中出现的次数
题目描述统计一个数字在排序数组中出现的次数。解法1:普通解法-顺序查找:时间复杂度:O(n)解法2:排序数组的查找可以用二分法,怎么用?有多个重复的数字,若是查找的中间数和两边的都相同,那么两边都要找时间复杂度:O(n)。没有利用二分查找的优势思路转换:将查找的数字转换为查找第一个数字和最后一个数字,依然用二分法查找时间复杂度:O(logn)二分法的改进...原创 2019-02-03 13:25:20 · 355 阅读 · 0 评论 -
16.数组中的逆序对
题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007输入描述:题目保证输入的数组中没有的相同的数字数据范围:对于%50的数据,size<=10^4对于%75的数据,size<=10^5对于%100的数...原创 2019-02-03 10:13:21 · 157 阅读 · 0 评论 -
14.连续子数组的最大和
题目描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大连续子序...原创 2019-02-01 17:05:05 · 152 阅读 · 0 评论 -
15.把数组排成最小的数
题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。解法1:分为两步走:1)其中两个数拼接在一起2)采用排序算法,从小到大排序关键:自定义一个比较大小的函数,比较两个字符串s1, s2大小的时候,先将它们拼接起来,比较s1+s2,和s2+s1那...原创 2019-02-01 21:07:33 · 201 阅读 · 0 评论