滑动窗口:
无重复字符的最长子串

思路:特点就是Set<Character>
合并区间:

java
基础知识:对于这种区间带区间类型int[][] nums,可以这样考虑
for(int[] p : nums) 这里的p代表的单个区间的索引:例如p[0] = 1 p[1] = 3;
区间起始位置排序 Array.sort(nums,(p,q) -> p[0]-q[0])
Arrays.deepToString(result)
return ans.toArray(new int[ans.size()][]);
java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Solution {
public static int[][] merge(int[][] nums){
// 比较两个区间起始位置,从小到大排列
Arrays.sort(nums,(p,q)->p[0]-q[0]);
List<int[]> ans = new ArrayList<>();
// 增强型for循环
for(int[] p:nums){
int m = ans.size();
if(m>0 && p[0] <= ans.get(m-1)[1]){
ans.get(m-1)[1] = Math.max(ans.get(m-1)[1],p[1]);
}else{
ans.add(p);
}
}
// List列表转为数组
return ans.toArray(new int[ans.size()][]);
}
public static void main(String[] args){
Solution solution = new Solution();
int[][] nums = {{1,3},{2,6},{8,10},{15,18}};
int[][] result = solution.merge(nums);
System.out.println(Arrays.deepToString(result));
}
}
字节面试题
给定数组,奇数在前,偶数在后
java
import java.util.Arrays;
public class Solution {
public static int[] jiaohuang(int[] nums){
if(nums.length<2||nums == null){
return nums;
}
int left = 0;
int right = nums.length-1;
while (left<right){
// 选定偶数
while (left<right && nums[left] % 2 !=0){
left++;
}
// 选定奇数
while (left<right && nums[right]%2 == 0){
right--;
}
if(left < right){
int temp = nums[left];
nums[left] = nums[right];
nums[right] = temp;
left++;
right--;
}
}
return nums;
}
public static void main(String[] args){
Solution solution = new Solution();
int[] nums = {1,2,3,4};
int[] result = solution.jiaohuang(nums);
System.out.print(Arrays.toString(nums));
}
}