- 博客(8)
- 收藏
- 关注
原创 【刷题日记】长度最小的子数组
当子数组和>target时进行子数组长度,并尝试缩小子数组,并与min比较取较小值。没有考虑无满足条件子数组的情况,在返回前添加判断即可。设置子数组的左边界i,右边界j,指针j遍历数组。
2023-04-07 16:54:35 173
原创 【刷题日记】移除元素
2. 本质上就是移动目标元素到数组的最后,实现不难,但是相比于暴力解法的两层for循环O(n^2),可以使用更巧妙的双指针法,时间复杂度为O(n)。最初思路是找到目标元素与数组最后一个元素交换,但是没法解决数组元素全部都是目标元素的情况,例如输入 [3,3], 3 while就会陷入死循环。利用双指针法,j指针遍历数组,遇到相同元素就用j指针指向的元素与i指针指向的元素交换,返回i。1. 不要使用额外的数组空间,你必须仅使用 O(1) 额外空间并。
2023-03-31 12:06:57 151
原创 【刷题日记】二分查找
3. if (nums[mid] > target) right 要赋值为 mid- 1,因为当前这个nums[mid]一定不是target,那么接下来要查找的左区间右边界下标位置就是 mid- 1, 同理if(nums[mid]
2023-03-29 14:19:52 104
原创 【刷题日记】最大子数组和-力扣(java)
力扣题目链接:https://leetcode-cn.com/problems/maximum-subarray/如果数组中有正数,则所求最大子数组一定是正数为首位。所以当前和如果为负数时直接归零。得到一个时间复杂度为O(n)的java解决方法如下:class Solution { public int maxSubArray(int[] nums) { int csum = 0; int max = -10000; //int flag
2021-12-19 12:59:37 1340
原创 【刷题日记】分发饼干 (贪心算法)
力扣链接:https://leetcode-cn.com/problems/assign-cookies/submissions/本题非常简单,可我的代码时间复杂度是O(n^2),写得很烂,我的代码如下:class Solution { public int findContentChildren(int[] g, int[] s) { if(s.length == 0) return 0; Arrays.sort.
2021-12-17 20:37:11 506
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人