数组
丑月十五
这个作者很懒,什么都没留下…
展开
-
leetcode59. 螺旋矩阵 II
leetcode59. 螺旋矩阵 II原创 2023-12-05 01:01:07 · 138 阅读 · 0 评论 -
leetcode209. 长度最小的子数组
给定一个含有 n 个正整数的数组和一个正整数 target。找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr] ,并返回其长度。如果不存在符合条件的子数组,返回 0。原创 2023-12-03 23:41:14 · 75 阅读 · 0 评论 -
leetcode977. 有序数组的平方
leetcode977. 有序数组的平方原创 2023-12-03 22:59:44 · 90 阅读 · 0 评论 -
leetcode27. 移除元素
leetcode27. 移除元素原创 2023-12-02 00:18:28 · 122 阅读 · 0 评论 -
leetcode704. 二分查找
leetcode704. 二分查找原创 2023-11-30 01:59:42 · 110 阅读 · 0 评论 -
剑指 Offer 63. 股票的最大利润z
假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。示例 2:输入: [7,6,4,3,1]输出: 0解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。方法1:动态规划。用dp[]数原创 2021-08-24 16:38:14 · 53 阅读 · 0 评论 -
剑指 Offer 61. 扑克牌中的顺子
从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。示例 1:输入: [1,2,3,4,5]输出: True示例 2:输入: [0,0,1,2,5]输出: True方法1:这个题要先进行排序,然后判断不能有重复的数字。这是第一点。第二点要记录王的个数,因为0一定排在最前面,并且是顺子的话,每次都要递增1,没有王的时候,末-首=4有一个王的时候,末-第二张原创 2021-08-24 15:08:40 · 40 阅读 · 0 评论 -
剑指 Offer 66. 构建乘积数组
给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。示例:输入: [1,2,3,4,5]输出: [120,60,40,30,24]方法1:建立两个数组分别放该点左侧和右侧的乘积,求一个数的乘积时,只需要求前一个位置左数组的值,再乘后一个位置右数组的值即可。class Solution { publ原创 2021-08-24 11:18:20 · 56 阅读 · 0 评论 -
剑指 Offer 47. 礼物的最大价值
在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?示例 1:输入: [ [1,3,1], [1,5,1], [4,2,1]]输出: 12解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物方法:动态规划class Solution { public int maxValue(原创 2021-08-12 19:42:19 · 71 阅读 · 0 评论 -
剑指 Offer 57. 和为s的两个数字
输入一个递增排序的数组和一个数字s,在数组中查找两个数,使得它们的和正好是s。如果有多对数字的和等于s,则输出任意一对即可。示例 1:输入:nums = [2,7,11,15], target = 9输出:[2,7] 或者 [7,2]示例 2:输入:nums = [10,26,30,31,47,60], target = 40输出:[10,30] 或者 [30,10]方法1:哈希class Solution { public int[] twoSum(int[] nums, in原创 2021-08-12 18:23:11 · 43 阅读 · 0 评论 -
剑指 Offer 56 - II. 数组中数字出现的次数 II
在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。示例 1:输入:nums = [3,4,3,3]输出:4示例 2:输入:nums = [9,1,7,9,7,9,7]输出:1方法1:我直接使用了hashmap,理解起来简单。class Solution { public int singleNumber(int[] nums) { Map<Integer,Integer> map = new HashM原创 2021-08-12 11:40:00 · 48 阅读 · 0 评论 -
剑指 Offer 56 - I. 数组中数字出现的次数
一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例 1:输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]示例 2:输入:nums = [1,2,10,4,1,4,3,3]输出:[2,10] 或 [10,2]方法:用位运算class Solution { public int[] singleNumbers(int[] nums) { int原创 2021-08-11 16:41:51 · 48 阅读 · 0 评论 -
剑指 Offer 39. 数组中出现次数超过一半的数字
数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入: [1, 2, 3, 2, 2, 2, 5, 4, 2]输出: 2方法1:哈希我的代码:好low,因为++count写错了一直找不到原因class Solution { public int majorityElement(int[] nums) { Map<Integer,Integer> map = new HashMa原创 2021-08-11 10:28:15 · 47 阅读 · 0 评论 -
剑指 Offer 31. 栈的压入、弹出序列
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:我们可以按以下顺序执行:push(1), push(2), push(3), push(4)原创 2021-08-10 22:28:23 · 139 阅读 · 0 评论 -
剑指 Offer 42. 连续子数组的最大和
输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。class Solution { public int maxSubArray(int[] nums) { if(nums.length==0){ return 0; }原创 2021-08-10 22:09:42 · 40 阅读 · 0 评论 -
剑指 Offer 40. 最小的k个数
输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。方法1:排序,再查找。(玩赖)class Solution { public int[] getLeastNumbers(int[] arr, int k) { int[] res = new int[k]; Arrays.sort(arr); for(int i=0;i<k;i++){原创 2021-08-10 21:34:40 · 41 阅读 · 0 评论 -
剑指 Offer 17. 打印从1到最大的n位数
输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数。比如输入 3,则打印出 1、2、3 一直到最大的 3 位数 999。示例 1:输入: n = 1输出: [1,2,3,4,5,6,7,8,9]方法:class Solution { public int[] printNumbers(int n) { int max = 0; max = (int)(Math.pow(10, n)) - 1; int[] res原创 2021-08-10 17:09:47 · 39 阅读 · 0 评论 -
剑指 Offer 29. 顺时针打印矩阵
输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]方法:注意要判断边界条件,每次走完都要判断,left、top、right、bottom是边界条件,预先定义好的class Solution原创 2021-08-10 16:42:36 · 34 阅读 · 0 评论 -
剑指offer面试题21:调整数组顺序使奇数位于偶数前面
剑指offer面试题21:调整数组顺序使奇数位于偶数前面输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分。示例:输入:nums = [1,2,3,4] 输出:[1,3,2,4] 注:[3,1,2,4] 也是正确的答案之一。方法1: 我做了一个stack,虽然很low,但是很好理解。class Solution { public int[] exchange(int[] nums) { Stack<In原创 2021-07-12 01:55:09 · 132 阅读 · 0 评论 -
剑指 Offer 07. 重建二叉树
输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。示例 1:Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]Output: [3,9,20,null,null,15,7]示例 2:Input: preorder = [-1], inorder = [-1]Output: [-1]/** * Definition for a binary tree n原创 2021-08-10 16:23:47 · 45 阅读 · 0 评论 -
剑指 Offer 12. 矩阵中的路径
给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例 1:输入:board = [["A","B","C","E"],["S","F","C","S"],["A","D","E","E"]], word = "ABCCED"输出:true示例 2:输入原创 2021-08-10 12:15:52 · 49 阅读 · 0 评论 -
剑指offer面试题11:旋转数组的最小数字
把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。示例 1:输入:[3,4,5,1,2]输出:1示例 2:输入:[2,2,2,0,1]输出:0方法1:逐个排查。还有一种是Arrays.sort(numbers),有点玩赖。class Solution { public int minArray(int[] num原创 2021-08-09 23:38:39 · 96 阅读 · 0 评论 -
剑指offer面试题4:二维数组中的查找
在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]]给定 target = 5,返回原创 2021-08-09 20:49:59 · 36 阅读 · 0 评论 -
剑指offer面试题3:数组中重复的数字
找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字示例1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 方法1:首先想到hashset,因为这里面不重复。class Solution { public int findRepeatNumber(int[] nums) { HashSet<I原创 2021-08-09 18:16:14 · 43 阅读 · 0 评论