
数组
asjodnobfy
这个作者很懒,什么都没留下…
展开
-
209.长度最小的子数组(滑动窗口)
给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl+1, …, numsr-1, numsr],并返回其长度。如果不存在符合条件的子数组,返回 0 。示例 1:输入:target = 7, nums = [2,3,1,2,4,3] 输出:2 解释:子数组 [4,3] 是该条件下的长度最小的子数组。示例 2:输入:target = 4, nums = [1,4,4] 输出:1 示例 3:输入.原创 2021-08-18 09:18:55 · 94 阅读 · 0 评论 -
283.移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明:必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/move-zeroes著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。解题思路移动元素,使用快慢指针。快指针用于从0开始寻找目标对象.原创 2021-08-15 09:11:47 · 114 阅读 · 0 评论 -
367.有效的完全平方数
解题思路与题 69.x的平方根 意思差不多都用二分法来求解,寻找一个能够被平方等于num的数找得到就是true找不到就是false时间复杂度为 O(logn)代码class Solution { public boolean isPerfectSquare(int num){ //采用二分法 初始边界:[0,num] //寻找能够被平方等于为num的数 int left= 0,right = num; //int mid =left + (right-原创 2021-08-13 09:43:08 · 102 阅读 · 0 评论 -
26.删除有序数组中的重复项
给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝 int len = removeDuplicates(nu.原创 2021-08-14 09:40:18 · 80 阅读 · 0 评论 -
34.在排序数组中查找元素的第一个和最后一个位置
给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值 target,返回 [-1, -1]。进阶:你可以设计并实现时间复杂度为 O(log n) 的算法解决此问题吗?示例 1:输入:nums = [5,7,7,8,8,10], target = 8 输出:[3,4] 示例 2:输入:nums = [5,7,7,8,8,10], target = 6 输出:[-1,-1] 示例 3:输入:nums = [], .原创 2021-08-10 10:30:54 · 136 阅读 · 0 评论 -
35.搜索插入位置
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。你可以假设数组中无重复元素。示例 1:输入: [1,3,5,6], 5输出: 2示例 2:输入: [1,3,5,6], 2输出: 1示例 3:输入: [1,3,5,6], 7输出: 4思路数组的遍历&比大小?本来想用for(num:nums)。但是这样就不知道怎么拿到数组的下标。所以还是乖乖for(int i=0; i<position; i+.原创 2021-06-14 20:42:48 · 74 阅读 · 0 评论 -
704.二分查找
给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的target,如果目标值存在返回下标,否则返回 -1。示例 1: 输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例 2: 输入: nums = [-1,0,3,5,9,12],target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1提示: 你可以假设 nums 中的.原创 2021-08-08 10:28:25 · 128 阅读 · 0 评论 -
27.移除元素(两种解法)
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入数组是以「引用」方式传递的,这意味着在函数里修改输入数组对于调用者是可见的。你可以想象内部操作如下:// nums 是以“引用”方式传递的。也就是说,不对实参作任何拷贝 int .原创 2021-08-08 11:40:17 · 105 阅读 · 0 评论 -
217.存在重复元素
给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: true解题思路1Java中的集合:HashSet,存放独一无二的数据。代码class Solution { public boolean contai.原创 2021-07-13 08:19:51 · 97 阅读 · 0 评论 -
169.多数元素
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。示例 1:输入:[3,2,3]输出:3示例 2:输入:[2,2,1,1,1,2,2]输出:2双层循环(超出时间限制)class Solution { public int majorityElement(int[] nums) { int num=0,count=0; for(int .原创 2021-07-03 11:02:55 · 106 阅读 · 0 评论 -
122.买卖股票的最佳时期II
给定一个数组 prices ,其中 prices[i] 是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)示例 1:输入: prices = [7,1,5,3,6,4]输出: 7解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。随后,在第 4 天(股票价格 = 3).原创 2021-07-01 11:37:43 · 108 阅读 · 0 评论 -
108.将有序数组转换为二叉搜索树
给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。示例输入:nums = [-10,-3,0,5,9]输出:[0,-3,9,-10,null,5]解释:[0,-10,5,null,-3,null,9]示例输入:nums = [1,3]输出:[3,1]解释:[1,3] 和 [3,1] 都是高度平衡二叉搜索树。二叉查找树(Binary Search .原创 2021-06-29 10:31:52 · 89 阅读 · 0 评论