自定义博客皮肤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 7990

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

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

LeetCode Contest 238❤1837. Sum of Digits in Base Khttps://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 129

原创 LeetCode Contest 237

LeetCode Contest 2371832. Check if the Sentence Is Pangramhttps://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 82

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

异或是一种基于二进制的位运算,用符号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=x4、自反性 A XOR B XOR B = A xor 0 = A异或运算最常见于多项式除法,不过它最重要的性质还是自反性:A

2021-04-26 07:35:43 830

原创 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 2187 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 105

原创 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 137 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 101

原创 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 218 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 241

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

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

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

原创 Arrays分类算法-Monotonic Array

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

2021-01-20 13:18:13 187 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 106

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

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

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

原创 Arrays分类算法-Two Number Sum

Arrays

2021-01-18 13:00:58 78

空空如也

空空如也

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

TA关注的人

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