代码随想录打卡day2
977,有序数组的平方排序
class Solution {
public int[] sortedSquares(int[] a) {
//每次往两侧找,取两侧最大的一个,放入队列中最后当成最大的
int left = 0;
int right = a.length -1;
int rail_ptr = a.length -1;
int[] b = new int[a.length];
while(left <= right) {
if (a[left]*a[left] > a[right]*a[right]) {
b[rail_ptr] = a[left] * a[left];
rail_ptr--;
left++;
}
else {
b[rail_ptr] = a[right]*a[right];
rail_ptr--;
right--;
}
}
return b;
}
}
209,长度最小的子序列
方法:滑动窗口
class Solution {
public int minSubArrayLen(int target, int[] a) {
//i是后指针,j是前指针
//sum用来判断从0到i,这i+1个元素之和有没有达到target的基础条件
//达到之后,再减少j,看区间能不能缩小
//注意,这里的j是单调的, 比如i = i1 时,对应[j1,i1]是最小区间
//那么i = i2 > i1, [j1,i2]必定满足条件而且区间长度比[j1,i1]大1,
//需要淘汰,前指针从j1+1开始,也就是测试区间从[j1+1,i1+1]开始
int minlen = Integer.MAX_VALUE;
int jlen = Integer.MAX_VALUE;
int sum = 0;
int j = 0;
for (int i = 0; i < a.length; i++) {
sum += a[i];
while (sum >= target) {
sum -= a[j];
jlen = i-j+1;
minlen = Math.min(minlen, jlen);
j++;
}
}
//min经过修改,说明找到满足target的区间;min未经过修改,说明没找到
return minlen = (minlen == Integer.MAX_VALUE)? 0 : minlen;
}
}
59,螺旋矩阵
方法:找规律
class Solution {
public int minSubArrayLen(int target, int[] a) {
//i是后指针,j是前指针
//sum用来判断从0到i,这i+1个元素之和有没有达到target的基础条件
//达到之后,再减少j,看区间能不能缩小
//注意,这里的j是单调的, 比如i = i1 时,对应[j1,i1]是最小区间
//那么i = i2 > i1, [j1,i2]必定满足条件而且区间长度比[j1,i1]大1,
//需要淘汰,前指针从j1+1开始,也就是测试区间从[j1+1,i1+1]开始
int minlen = Integer.MAX_VALUE;
int jlen = Integer.MAX_VALUE;
int sum = 0;
int j = 0;
for (int i = 0; i < a.length; i++) {
sum += a[i];
while (sum >= target) {
sum -= a[j];
jlen = i-j+1;
minlen = Math.min(minlen, jlen);
j++;
}
}
//min经过修改,说明找到满足target的区间;min未经过修改,说明没找到
return minlen = (minlen == Integer.MAX_VALUE)? 0 : minlen;
}
}
1 声望
0 粉丝
推荐阅读
用javascript分类刷leetcode20.字符串(图文视频讲解)
给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删...
hellocoder2028赞 1阅读 368
刷完15道js版dp题,面试再也不怕了
某个男人 动态规划,而我作为一个致力称为厨师界最会写算法的前端,总得刷上一部分题,有那么一点发现吧,现在我们就来聊聊,菜鸡如我,发现了什么。
hellocoder2028赞 1阅读 353
力扣之 4 的幂 & 3 的幂 & 2 的幂(递归思想)
题目描述给定一个整数,写一个函数来判断它是否是 4 的幂次方。如果是,返回 true ;否则,返回 false 。整数 n 是 4 的幂次方需满足:存在整数 x 使得 n == 4x示例 1: {代码...} 示例 2: {代码...} 示例 3: {...
水冗水孚赞 1阅读 668
力扣之仅仅反转字母(双指针方式)
题目描述给你一个字符串 s ,根据下述规则反转字符串:所有非英文字母保留在原有位置。所有英文字母(小写或大写)位置反转。返回反转后的 s 。示例 1: {代码...} 示例 2: {代码...} 示例 3: {代码...} 力扣...
水冗水孚赞 1阅读 520
力扣之按身高排序
题目描述给你一个字符串数组 names ,和一个由 互不相同 的正整数组成的数组 heights 。两个数组的长度均为 n 。对于每个下标 i,names[i] 和 heights[i] 表示第 i 个人的名字和身高。请按身高 降序 顺序返回对应...
水冗水孚阅读 1.1k
力扣之回文数(双指针中的对撞指针公式模板)
什么双指针没刷算法之前,一听双指针,感觉很厉害的样子。实际上呢?也的确是一个不错的解题思路方式。在LeetCode上的双指针是一大类题目的解决方式,看一下,发现有近200题是双指针类型的,如下图:由此可见,双...
水冗水孚阅读 956
力扣之反转字符串之原地修改输入数组(双指针方式)
题目描述编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。示例 1: {代码...}...
水冗水孚阅读 876
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。