
刷题
文章平均质量分 58
坚持每周更五次!!
jjjstephen
就读于天津大学,在做视觉检测相关研究。
技能:软件开发
正在开发技能:ML&DL Paper撰写
待开发技能:硬件开发、硬件设计
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【刷题---数组、递归和循环】基础【不断更新...】2021.03.11已更
一、基本概念1.数组的基本概念(1)由于数组中的内存是连续的,于是可以根据下标在O(1)的时间内读写任何元素(时间效率很高)(2)STL的vector每次扩容是新的容量是前一次的两倍。STL扩容过程:把之前的数据复制到新的数组中,再把之前的内存释放。(每一次扩充数组时都有大量的额外操作,这对时间性能有负面影响,因此使用动态数组时要尽量减少改变数组容量的大小的次数)注:如果使用vector扩容得到的容量远远大于预期的容量可以使用成员函数shrink_to_fit()该成员函数可以使得vecto原创 2020-12-15 20:18:53 · 376 阅读 · 2 评论 -
LeetCode 31:下一个排列
题目:实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须** 原地 **修改,只允许使用额外常数空间。示例1:输入 :nums = [1,2,3]输出:[1,3,2]示例2:输入 :nums = [3,2,1]输出:[1,2,3]示例3:输入 :nums = [1,1,5]输出:[1,5,1]示例4:输入 :nums = [1]输出:[1.原创 2021-03-11 19:47:09 · 148 阅读 · 0 评论 -
LeetCode 442:数组中的重复数据
索引请参考:系列目录题目:给定一个整数数组a,其中1≤a[i]≤n(n为数组长度),其中有些元素出现两次而其他元素出现一次,找到所有出现两次的元素你可以不用到任何额外空间并在O(n)时间复杂度内解决这个问题吗?示例:输入[4,3,2,7,8,2,3,1]输出[2,3]解答class Solution {public: vector<int> findDuplicates(vector<int>& nums) { vecto原创 2021-03-10 21:40:49 · 295 阅读 · 0 评论 -
LeetCode 1:两数之和
索引请参考:系列目录题目:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:输入nums = [2,7,11,15],target = 9输出:[0,1],原因: nums[0] + nums[1] = 2 + 7 = 9分析:思路1:暴力法:两个循环进行不断的判断,若满足条件返回索引值。否则返回空数组思路2:利用uno原创 2021-01-01 19:54:19 · 120 阅读 · 0 评论 -
剑指offer面试题13:机器人的运动范围
索引请参考:系列目录题目:地上有一个m行n列的方格。一个机器人从坐标(0,0)的各自开始移动,它每次可以向左右上下移动一个各自,但不能进入行坐标和列坐标数位之和大于k的格子。示例:k = 18,机器人能够进入(35,37)原因是:3+5+3+7 = 18,但是它不能进入方格(35,38),因为3+5+3+8 = 19.分析:思路:本题的主要思路时深度优先搜索,当然广度优先搜索也可以给出一个6*20的矩阵,k = 9(1)将矩阵中的所有元素初始化为0,如果机器人已经进入该方格,则原创 2020-12-30 20:40:26 · 118 阅读 · 0 评论 -
爱奇艺2019面试题真题
索引请参考:系列目录题目:牛牛的老师给出一个区间的定义:对于X<=y,[x , y]表示x到y之间(包括x和y)的所有连续整数集合如:[3 , 3] = {3}, [4,7] = {4, 5, 6, 7}牛牛现在有一个长度为n的递增序列,牛牛想知道需要多少个区间合并起来等于这个序列。示例:输入{1,2,3,4,5,6,7,8,9,10}输出:1示例:输入{1,3,5,6},输出3分析:(1)数组特征:递增序列(2)条件:只要最后一个元素减去前一个元素大于1,则这两个元素需要原创 2020-12-29 18:52:57 · 351 阅读 · 0 评论 -
剑指offer面试题66:构建乘积数组
索引请参考:系列目录题目:给定一个数组A[0,1,…,n-1],构建一个数组B[0,1,…,n-1],其中B中的元素B[ i ] = A[0] * A[1] * … * A[n - 1]。不能使用除法。(注:规定B[0] = A[1] * A[2]* …* A[n - 1],B[n - 1] = A[0] * A[1]* …* A[n - 2])对于A长度为1的情况,B无意义,故而无法构建,因此该情况不会存在。分析:思路1:暴力法(具体请参考代码)思路2:left[i] = A[0]原创 2020-12-28 21:09:48 · 163 阅读 · 0 评论 -
剑指offer面试题57:和为S的两个数字
索引请参考:系列目录题目:输入一个递增排序的数字和一个数字S,使得他们的和正好是S。如果有多对数字的和等于S,输出2个乘积最小的。示例:输入: {1,2,3,3,4,5,6} 和 6输出: {2,4}分析:思路1:利用容器set或者map(multi)的成员函数(1)将数组放入set或者map(multi)中(2)遍历 + 判断m_elem = s - array[i]if(multimap::count(m_elem)) //放入数组中如果结果数组中的个数大于1,原创 2020-12-26 15:43:08 · 161 阅读 · 0 评论 -
剑指offer面试题53:在排序数组中数字出现的次数
索引请参考:系列目录首先声明:本题是受次尝试完全在Ubuntu平台上发布。包括写博客、调试代码。牛客测试结果等。每天进步一点点!题目统计一个数字在排序数组中出现的次数示例:输入:{1,2,3,3,3,3,4,5} 和 3输出 4分析:思路1:(1)讲数组放入multiset中(2)利用成员函数count寻找元素个数思路2:二分法看到排序数组最直接的方法就是想到二分法了吧~。具体算法原理和用处敬请期待。各位小伙伴也可以先上网搜一搜~本题中通过二分法去查找数字的原创 2020-12-25 11:43:05 · 131 阅读 · 0 评论 -
剑指offer面试题51:数组中的逆序对
索引请参考:系列目录题目:在数组中的2个数字,如多前面的一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数字,求出这个数组中给逆序对的个数总数。示例:输入{7,5,6,4}输出:5 分别时 (7,6)、(7,5)、(7,4)、(6,5)、(6,4)、(5,4)分析:就目前数组知识来说,只能采取暴力法。将数组从大到小进行排序将排序后的数组两两组合int inversePair(std::vector<int> & data) { //1原创 2020-12-24 20:26:19 · 195 阅读 · 1 评论 -
剑指offer:把数组排列成最小的数
索引请参考:系列目录题目:输入一个整数数组,把数组例多有数字拼接起来排成一个数,打印出来能拼接出来的所有数字中最小的一个。示例:输入:{3,32,321}输出:321323分析:思路1:该题目主要是对排列组合的考察。如果熟悉对STL熟悉的小伙伴,应该是一道很简单的题目思路2:对输入数组转化成string类型,然后对其进行升序排序。得到的便是最小是最小的拼接数方法1:std::string ret(number.size(), '9'); std::sort(numb原创 2020-12-23 17:27:34 · 127 阅读 · 0 评论 -
剑指offer面试题40:最小k个数
索引请参考:系列目录题目:输入n个整数,找出其中最小的k个数。示例:输入{4,5,1,6,2,7,3,8}输出最小的4个数是1,2,3,4分析:该题目实质是对排序算法的一种考察。其中在节体过程中采用了STL sort()采用的是优化版本的快速排序,在最后阶段采用直接插入排序。因此时间复杂度为O(N·log(N))。题目简单,具体参考代码std::vector<int> getLeastNumber(std::vector<int> & array原创 2020-12-22 10:40:16 · 137 阅读 · 0 评论 -
网易2020笔试题:顺时针逆时针交叉填充数组
索引请参考:系列目录题目:定义N维蛇形方阵的生成方式如下:把1~N^2依次填入矩阵中,并且填入的时候,会从矩阵最外圈填,当最外圈填完后,会继续填写此外圈,一开始填写外圈的时候,会按照顺时针填入数字,到此外圈的时候,会用逆时针填入,在一圈则又会采用顺时针填写的方式,以这种顺时针、逆时针交错的填写的方式,直到所有数字填写完毕。示例:假设N= 7,7维方阵为:给定N,给出带哦个需要查询的坐标(x,y),请输出N维蛇形方阵中(x,y)的值是多少。假设左上角为(0,0),x代表行号,从上到下依次为0~原创 2020-12-21 16:26:11 · 408 阅读 · 0 评论 -
剑指offer面试题29:顺时针打印矩阵
索引请参考:系列目录题目:输入一个矩阵,按照从外向里顺时针依次大一每一个数字示例:输入输出:1 2 3 4 8 12 16 15 14 13 9 5 6 7 11 10思路:(1)分析循环打印条件假设 行数为 height 列数 width(1)打印第一圈左上角的坐标(0,0),第二圈的左上角坐标(1,1),以此类推注:做左上角坐标中行坐标和列坐标总是相同的 即在矩阵中选取左上角为(start,start)的一圈作为分析目标(2) 对于5*5矩阵矩阵而言原创 2020-12-21 11:59:30 · 132 阅读 · 0 评论 -
剑指offer面试题21:调整数组顺序奇数位于偶数前面
索引请参考:系列目录题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分示例:输入:2,1,4,9,7,6,3,5,8输出:1,9,7,3,5,2,4,6,8分析:将本题分为两种思维模式:人对数组进行排列的模式和机器对数组进行排列的模式人对数组进行排列的模式:看到一组数,从前往后进行依次对比然后进行排序机器对数组进行排列的模式:双指针进行快速比较排序思路1:遍历数组,若数组为偶数,则元素的位置不变若数原创 2020-12-20 09:46:14 · 164 阅读 · 1 评论 -
剑指offer:青蛙跳台阶问题
索引请参考:系列目录题目:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级台阶共有多少总跳法?例:输入 1 输出 1输入3 输出 3输入5 输出 8分析:分析题目规律:1级 输出 12级 输出23级 输出34级 输出45级 输出 86级 输出13综上考虑,该规律符合斐波那契数列的规律具体算法:int jumpFloor(int number) { int result[2] = {1,2}; if(number < 3)原创 2020-12-18 15:47:14 · 140 阅读 · 1 评论 -
剑指offer面试题10:求斐波那契数列的第n项
索引请参考:系列目录题目:写一个函数,输入n,求斐波那契额数列的第n项。斐波那契额数列的定义如下:分析:利用上述公式计算第n项斐波那契项可以实现,但是由于递归造成的时间可空间消耗很大。思路(2)对该算法进行了修改,使得不断地递归变成了有限项的迭代,大大减少了时间的消耗和空间消耗。思路:(1)按照上述公式实现该算法:(2)其实斐波那契数列从第二项开始的规律是第n项等于前两项的和。方法:把已经得到的数列中间项保存起来。具体实现见代码。方法(1):int fibonacc原创 2020-12-17 16:13:13 · 553 阅读 · 0 评论 -
剑指offer面试题4:二维数组中的查找
题目:在一个二维数组中,每一行都按照从左到右递增的顺序排列,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样一个二维数组和一个整数,判断数组中是否含有该整数。例:输入:查找:7 返回true 5 返回false思路:从此有序数组中选取一个数字,分三种情况:(1)当数组选取的数字刚好和要查找的数字相等时,结束查找过程(2)选取的数字小于要查找的数字,根据数组排序的规则,要查找的数字应该在当前 选取位置的右边或下边(3)选取的数字大于要查找的数字原创 2020-12-16 20:14:46 · 176 阅读 · 0 评论 -
剑指offer面试题3:数组中的重复数组
题目:在一个长度为n的数组里所有数字都在0~n-1的范围内。数组中的某些数字是重复的,但不知道有几个重复数字,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例:输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3思路:(1) 将所有元素放入hash table中注:放入hash table的格式 value_key(2)遍历:利用multimap成员函数count获取每一位有在hash table中的个数。如果其值大于1,则说明h原创 2020-12-15 21:02:42 · 157 阅读 · 0 评论