自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 收藏
  • 关注

原创 算法分析之常用符号大O、小o、大Ω、大Θ、w符号

大O:用另一个函数来描述一个函数数量级的渐近上界。 小o:表示一个函数渐进地小于另一个函数,没有等于。 大Ω:描述一个函数数量级的渐进下界。 小w:表示下界,大于的意思 Θ:既是上界也是下界相当于两者的结合,等于的意思。 w符号表示下界,大于。是大O符号和大Ω符号的结合。** 大O大Ω都是存在c,小o小w都是对于任意c 函数f ( n )代表某一算法在输入大小为n的情况下的工作量,则在n趋向∞的时候,我们将f (n)与另一行为已知的函数g(n)进行比较: 1、如果0,则称f (n)在数量级上严格小于g(n)

2022-02-17 05:07:28 10751

原创 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 209

原创 【解题笔记】:LeetCode Contest 238

LeetCode Contest 238 ❤ 1837. Sum of Digits in Base K https://leetcode.com/contest/weekly-contest-238/problems/sum-of-digits-in-base-k/ ???? : class Solution { public int sumBase(int n, int k) { int mod = 0; int res = 0; while (n

2021-04-26 08:10:37 236

原创 LeetCode Contest 237

LeetCode Contest 237 1832. Check if the Sentence Is Pangram https://leetcode.com/contest/weekly-contest-237/problems/check-if-the-sentence-is-pangram/ ???? : class Solution { public boolean checkIfPangram(String sentence) { if (sentence.equals(

2021-04-26 08:02:22 155

转载 异或、异或和 的性质与应用

异或是一种基于二进制的位运算,用符号XOR或者 ^ 表示,其运算法则是对运算符两侧数的每一个二进制位,同值取0,异值取1。它与布尔运算的区别在于,当运算符两侧均为1时,布尔运算的结果为1,异或运算的结果为0。 简单理解就是不进位加法,如1+1=0,,0+0=0,1+0=1。 性质 1、交换律 2、结合律(即(ab)c == a(bc)) 3、对于任何数x,都有xx=0,x0=x 4、自反性 A XOR B XOR B = A xor 0 = A 异或运算最常见于多项式除法,不过它最重要的性质还是自反性:A

2021-04-26 07:35:43 1146

原创 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 3009 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 193

原创 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 252 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 186

原创 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 364 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 367

原创 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 265

原创 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 279

原创 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 197

原创 Arrays分类算法-Monotonic Array

题目要求 解法一: Time: O(n^2]) Space: O(1) 代码:

2021-01-20 13:18:13 316 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 222

原创 Arrays分类算法-Smallest Difference

题目要求解法一: 暴力解法,遍历每一种可能性。从而求出最小差值的组合。 Time: O(n^2) Space: O(1) 代码: import java.util.*; // Brute force class Program { public static int[] smallestDifference(int[] arrayOne, int[] arrayTwo) { // Write your code here. if (arrayOne == null || arrayTwo =

2021-01-20 12:31:47 197

原创 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 184

原创 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 222

原创 Arrays分类算法-Two Number Sum

Arrays

2021-01-18 13:00:58 160

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除