
数组
puspos
这个作者很懒,什么都没留下…
展开
-
300. 最长上升子序列
问题给定一个无序的整数数组,找到其中最长上升子序列的长度。例子思路方法1 O(n^2)fn为结尾是n的最大长度,则它的值应该为:若n前面的数存在比它小的数集合,则从集合中找到最大长度的最大值,然后+1若n前面的数不存在比它小的数,则为1状态转移方程即:LIS(i)=max(1+LIS(j)ifj<iLIS(i) = max( 1 + LIS(j) if j <...原创 2020-03-21 22:02:08 · 85 阅读 · 0 评论 -
59. 螺旋矩阵 II
问题给定一个正整数 n,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。例子思路方法1以螺旋的方式访问各个位置的同时把对应的数字填进去方法2代码//方法1class Solution { public int[][] generateMatrix(int n) { int[][] res = new int...原创 2020-03-18 22:00:46 · 177 阅读 · 0 评论 -
74. 搜索二维矩阵
问题编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列。每行的第一个整数大于前一行的最后一个整数。例子思路方法1O(n)找到目标行,然后二分查找该行方法2代码//方法1class Solution { public boolean searchMatrix(int[][] matri...原创 2020-03-17 17:39:55 · 171 阅读 · 0 评论 -
338. 比特位计数
问题给定一个非负整数 num。对于 0 ≤ i ≤ num 范围中的每个数字 i ,计算其二进制数中的 1 的数目并将它们作为数组返回。例子思路方法1O(nlogn)先算一个数,然后外面for循环方法2O(n)i >> 1会把最低位去掉,因此i >> 1 也是比i小的,同样也是在前面的数组里算过。当 i 的最低位是0,i>>1是...原创 2020-03-17 10:21:53 · 129 阅读 · 0 评论 -
581. 最短无序连续子数组_【有最字,但不用dp】
问题给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序。你找到的子数组应是最短的,请输出它的长度。例子思路不用动态规划。我们将数组 nums排序,然后我们比较 nums 和 排序后的元素找到最左边和最右边不匹配的元素。它们之间的子数组就是要求的最短无序子数组。方法1方法2代码//方法1class Solu...原创 2020-03-16 21:25:53 · 161 阅读 · 0 评论 -
219. 存在重复元素 II
问题给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和 j 的差的绝对值最大为 k例子思路方法1方法2代码//方法1class Solution { public boolean containsNearbyDuplicate(int[] nums, int k) { ...原创 2020-03-16 11:58:58 · 104 阅读 · 0 评论 -
167. 两数之和 II - 输入有序数组
问题给定一个已按照升序排列 的有序数组,找到两个数使得它们相加之和等于目标数。函数应该返回这两个下标值 index1 和 index2,其中 index1 必须小于 index2例子思路方法1map O(n) O(n)方法2双指针 O(n) O(1)代码//方法1class Solution { public int[] twoSum(int[...原创 2020-03-16 10:09:59 · 111 阅读 · 0 评论 -
面试题61. 扑克牌中的顺子
问题例子思路方法1先排序,计算0的个数,再计算缺少的个数,2,5缺少2个【5-2-1=2】,如果0的个数>=缺少的个数,则可以,否则不可以方法2遍历数组,如果重复直接返回false【用boolean数组,arr[n]表示该数是否已经出现】,获取最大值和最小值,max,minmax-min>5说明连起来大于5张牌,直接falsemax-min<=5...原创 2020-03-14 17:41:47 · 248 阅读 · 0 评论 -
153. 寻找旋转排序数组中的最小值
问题例子思路方法1方法2代码//方法1class Solution { public int findMin(int[] nums) { //第一种 for(int i=1;i<nums.length;i++) if(nums[i]<nums[i-1]) return nums[i]; ...原创 2020-03-14 11:17:05 · 90 阅读 · 0 评论 -
154. 寻找旋转排序数组中的最小值 II_剑指offer-面试题11. 旋转数组的最小数字
问题例子思路左边递增的部分>右边递增的最大值方法1 O(n)遍历方法2 O(logn)二分查找代码//方法1class Solution { public int findMin(int[] nums) { for(int i=1; i<nums.length; i++){ if(nums[i]&...原创 2020-03-14 11:12:06 · 145 阅读 · 0 评论 -
238. 除自身以外数组的乘积_剑指offer_面试题66. 构建乘积数组
问题例子思路方法1 O(n) O(n)B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]arr[i]=a[0]*…A[i]arr2[i]=A[i]…*A[n-1]方法2 O(n) O(n)对称遍历从左往右遍历累乘,结果保存在数组 ret 中,此时 ret[i]表示,A[i]左边所有元素的乘积然后从右往左遍历累乘,获取A[i] 右边所...原创 2020-03-14 08:33:15 · 161 阅读 · 0 评论 -
268. 缺失数字_剑指offer_面试题53 - II
问题给定一个包含 0, 1, 2, …, n 中 n 个数的序列,找出 0 … n 中没有出现在序列中的那个数。例子思路方法1∑i=0i=ni−∑i=0i=n−1nums[i]\sum_{i=0}^{i=n}i-\sum_{i=0}^{i=n-1}nums[i]∑i=0i=ni−∑i=0i=n−1nums[i]方法2下标为0~n-1,在加上n,将其全部异或,再把数组所...原创 2020-03-11 20:36:25 · 141 阅读 · 0 评论 -
48. 旋转图像
问题给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。例子思路代码//交换i行和matrix.length-1-i行 for(int i=0; i<matrix.length/2; i++) { int[] temp = matrix[i]; matrix[i]=matrix[matr...原创 2020-03-08 11:30:14 · 104 阅读 · 0 评论 -
350. 两个数组的交集 II
问题给定两个数组,编写一个函数来计算它们的交集。例子思路map记录nums1中各元素出现的个数遍历num2,当元素在map.containsKey(ele) && map.get(n)>=1时,将list.add(ele) 并让map中k的值-1代码class Solution { public int[] intersect(int[] ...原创 2020-03-08 10:10:46 · 108 阅读 · 0 评论 -
349. 两个数组的交集
问题给定两个数组,编写一个函数来计算它们的交集。例子思路交集里每个元素是唯一的,所以使用set代码 Set<Integer> set = new HashSet<>(); Set<Integer> set2 = new HashSet<>(); for(int n:nu...原创 2020-03-08 09:37:33 · 112 阅读 · 0 评论 -
54. 螺旋矩阵_剑指offer_面试题29. 顺时针打印矩阵
问题给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。例子思路代码原创 2020-03-07 10:50:39 · 184 阅读 · 0 评论 -
283. 移动零
问题给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。例子思路遍历数组,把不为空的向前插,index是不为零的最后一个下标,之后的位置都填入0代码class Solution { public void moveZeroes(int[] nums) { //index为不为零的最后一个下标 int ...原创 2020-01-14 15:11:33 · 109 阅读 · 0 评论 -
240搜索二维矩阵_剑指Offer_4 二维数组中的查找
** 问题 **在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。判断数组中是否含有某整数。** 例子 **** 思路 **暴力 O(n^2)把二维数组中所有的元素取出来,放到set中,看set中是否有该数也很暴力从左上角开始[0][0],取出元素和该数比较,如果大于,让i+1或j+1,接着比,如...原创 2020-01-10 16:38:33 · 187 阅读 · 0 评论 -
3 数组中重复的数
问题长度为n的数组中,所有的数在0~n-1范围内。某些数字的重复的,但不知道有几个数字重复,重复了几次,找出任意一个重复的数字。例子{2,3,1,0,2,5,3}- - - -> 2或3思路先排序,再遍历找出arr[i]=arr[i-1]的数。T(n)=O(nlogn)哈希表,空间换时间,key为数,value为出现的次数。T(n)=O(n)代码//哈希表pub...原创 2020-01-09 16:34:21 · 187 阅读 · 0 评论