与李小若的欢乐园
若宝贝的小飞象
这个作者很懒,什么都没留下…
展开
-
2021-07-01 Leetcode题解:545,915,1647,722
915. Partition Array into Disjoint Intervals题目大意:给定数组nums = [5,0,3,8,6],划分成两个subarray: left & right使得max{left} <= min{right}思路: 顺序记录leftmax,倒序记录minright,从左到右找到第一个满足max{left} <= min{right}的划分点class Solution { public int partitionDisjoint(in原创 2021-07-01 18:42:07 · 122 阅读 · 0 评论 -
JAVA(数组/list/堆)sort自定义方法总结(重写自定义方法 & Lambda表达式)
JAVA中有很多方便的内置函数和方法,其方法可以自定义和改写。今天对Sort方法做一下小结:对数组进行排序1.1 默认排序(升序) int[] temp = {3, 6, 9, 3, 2, 1, 8, 7}; Arrays.sort(temp); System.out.println(Arrays.toString(temp)); //输出:[1, 2, 3, 3, 6, 7, 8, 9]1.2 自定义排序(降序)(1D)注意‼️: 这里不能定义int[],原创 2021-04-26 07:20:09 · 2432 阅读 · 1 评论 -
Arrays分类算法-Min Rewards(待完成)
题目要求** 解法一:**建立空数组存储结果,全部初始化为1。 从头开始遍历数组,如果出现比之前一个小的数,则反向继续遍历,将原来的分数进行更新(更新过程中需要比较新分数和原来久分数的大小,取最大值)。如果出现比之前的数组大,则原有的数+1。继续下一个数的判断。Time: O(n^2) Space: O(n)代码:import java.util.*;class Program { public static int minRewards(int[] scores) { // Wr原创 2021-01-31 13:52:41 · 129 阅读 · 0 评论 -
Arrays分类算法-Largest Range
题目要求解法一:可以通过sort的方式,简单找出最长的连续的序列。但是本题不可sort。因此为了查找高效,采用hashMap来存已知数字,别对数字是否被用过进行标记,分别向前和向后找出存在的连续序列。Time: O(n) Space: O(n)代码1:import java.util.*;class Program { public static int[] largestRange(int[] array) { // Write your code here. if (arr原创 2021-01-21 11:51:59 · 165 阅读 · 1 评论 -
Arrays分类算法-Four Number Sum(待完成)
题目要求解法一:与3Sum的解法相同,需要加一层循环, 而且需要考虑[-2,-1,-1,1,1,2,2]数组里面有重复数字的可能性。Time: O(n^3) Space: O(n)代码:import java.util.*;class Program { public static List<Integer[]> fourNumberSum(int[] array, int targetSum) { // Write your code here. if (arr原创 2021-01-21 10:24:29 · 112 阅读 · 0 评论 -
Arrays分类算法-Spiral Traverse(待完成)
题目要求corner case:解法一:Iterator解法Time: O(n) Space: O(n)代码:import java.util.*;class Program { public static List<Integer> spiralTraverse(int[][] array) { // Write your code here. ArrayList<Integer> res = new ArrayList<>();原创 2021-01-21 05:16:36 · 247 阅读 · 1 评论 -
Arrays分类算法-Subarray Sort
题目要求解法一:我们从乱序的序列出发,在乱序的序列中找出最大和最小的值,然后分别从原数组的头和尾部进行遍历,找出乱序最大最小值需要插入的点,就是需要重排序的范围.Time: O(n) Space: O(1)代码:import java.util.*;class Program { public static int[] subarraySort(int[] array) { // Write your code here. if (array == null || array.原创 2021-01-21 05:11:39 · 260 阅读 · 0 评论 -
Arrays分类算法-First Duplicate Value
题目要求解法一:暴力解法,找到数组中相同的两个数,然后返回index最小的那个(最早出现的那个)Time: O(n^2) Space: O(1)代码:import java.util.*;class Program { public int firstDuplicateValue(int[] array) { // Write your code here. if (array == null || array.length < 2) return -1; int原创 2021-01-21 04:42:06 · 160 阅读 · 0 评论 -
Arrays分类算法-ArrayOf Products
题目要求解法一:非常普通的暴力解法,头铁硬算出每个乘积,然后存入数组,毫无新意。Time: O(n^2) Space: O(n)代码:import java.util.*;class Program { public int[] arrayOfProducts(int[] array) { // Write your code here. if (array == null || array.length < 2) return array; int[] res =原创 2021-01-21 03:53:42 · 188 阅读 · 0 评论 -
Arrays分类算法-Longest Peak
题目要求解法一:本题我们可以找一个递增紧跟一个递减序列来判定一个peak序列的长度。但是这么做要记录的变化转态很多,不好实现。因此我们可以找到性质是Peak的点(大于前一个数和后一个数),然后以peak为点向两边分别展开,数出peak序列的长度,别筛选出最大的序列长度。Time: O(n) Space: O(1)代码1:import java.util.*;class Program { public static int longestPeak(int[] array) { //原创 2021-01-21 02:38:03 · 138 阅读 · 0 评论 -
Arrays分类算法-Monotonic Array
题目要求解法一:Time: O(n^2]) Space: O(1)代码:原创 2021-01-20 13:18:13 · 222 阅读 · 1 评论 -
Arrays分类算法-Move Element To End
题目要求解法一:set两个,一头一尾,各自判断是否等于targetToMove, 然后进行逻辑判断进行交换或者移动。Time: O(n) Space: O(1)代码1:import java.util.*;class Program { public static List<Integer> moveElementToEnd(List<Integer> array, int toMove) { // Write your code here. if (a原创 2021-01-20 12:44:34 · 123 阅读 · 0 评论 -
Arrays分类算法-Smallest Difference
题目要求解法一:暴力解法,遍历每一种可能性。从而求出最小差值的组合。Time: O(n^2) Space: O(1)代码:import java.util.*;// Brute forceclass Program { public static int[] smallestDifference(int[] arrayOne, int[] arrayTwo) { // Write your code here. if (arrayOne == null || arrayTwo =原创 2021-01-20 12:31:47 · 127 阅读 · 0 评论 -
Arrays分类算法-Three Number Sum
题目要求解法一:与two sum的思路相同,可以用二分法搜索。只是left + right的值等于target - sum.Time: O(n^2) Space: O(1)代码:import java.util.*;class Program { public static List<Integer[]> threeNumberSum(int[] array, int targetSum) { // Write your code here. if (array =原创 2021-01-18 13:36:24 · 118 阅读 · 0 评论 -
Arrays分类算法-Validate Subsequence
题目要求解法一:通过双指针,while loop 一个一个比较两数组数字的大小,最后看sequence是否都被包含在array中。Time: O(n) Space: O(1)代码:import java.util.*;class Program { public static boolean isValidSubsequence(List<Integer> array, List<Integer> sequence) { // Write your cod原创 2021-01-18 13:30:07 · 136 阅读 · 0 评论 -
Arrays分类算法-Two Number Sum
Arrays原创 2021-01-18 13:00:58 · 87 阅读 · 0 评论