滑动窗口+子串+普通数组算法
滑动窗口:
无重复字符的最长子串
思路:特点就是Set<Character>
合并区间:
基础知识:对于这种区间带区间类型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()][]);
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));}}
字节面试题
给定数组,奇数在前,偶数在后
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));}
}