Leetcode 763.划分字母区间
个人感觉很有意思的一道题~大体思路就是,从0下标开始遍历.确定0下标所指的字符的最远位置,如果最远位置与当前位置下标相同(即只出现一次),则加入结果集。如果有更远的位置,从该下标的下一个位置开始遍历,依次寻找从0...maxPos中的字符的更远位置,如果存在更远的,更新maxPos.当遍历位置与maxPos相同时,加入结果集。本题可使用int[]数组代替HashMap以提高效率。public Li
觉宇宙之无穷,识盈虚之有数
个人感觉很有意思的一道题~大体思路就是,从0下标开始遍历.确定0下标所指的字符的最远位置,如果最远位置与当前位置下标相同(即只出现一次),则加入结果集。如果有更远的位置,从该下标的下一个位置开始遍历,依次寻找从0...maxPos中的字符的更远位置,如果存在更远的,更新maxPos.当遍历位置与maxPos相同时,加入结果集。本题可使用int[]数组代替HashMap以提高效率。public Li
方法1.使用JDK排序后进行对比public int findUnsortedSubarray(int[] nums) { int[] sort = nums.clone(); Arrays.sort(sort); int len = sort.length; int left = 0; int right = len - 1; while(lef
方法1.可以采用一个二维数组存放该数组中的数相加所能到达的每个数值,最后判断是否有target.public boolean canPartition(int[] nums) { int len = nums.length; if(len == 1){ return false; } if(len == 2){ return nums
1.斐波那契数一.常见的递归解法public int fib(int n) { if(n == 0){ return 0; } if(n == 1){ return 1; } return fib(n-1) + fib(n-2); } 此方法严重浪费内存和时间,可利用数组对其优化.二.数组解法 if(n == 0){
public int[][] merge(int[][] intervals) { if(intervals.length == 1 ){ return intervals; } List<int[]> res = new LinkedList<>(); //自定义数组排列规则 Arrays.sort(interval