滑动窗口+子串+普通数组算法

滑动窗口:

无重复字符的最长子串

思路:特点就是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));
    }
}