<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[twelveight的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/twelveight</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; twelveight]]></copyright><item><title><![CDATA[算法分析之常用符号大O、小o、大Ω、大Θ、w符号]]></title><link>https://blog.youkuaiyun.com/twelveight/article/details/122975227</link><guid>https://blog.youkuaiyun.com/twelveight/article/details/122975227</guid><author>twelveight</author><pubDate>Thu, 17 Feb 2022 05:07:28 +0800</pubDate><description><![CDATA[大O：用另一个函数来描述一个函数数量级的渐近上界。
小o：表示一个函数渐进地小于另一个函数，没有等于。
大Ω：描述一个函数数量级的渐进下界。
小w：表示下界，大于的意思
Θ：既是上界也是下界相当于两者的结合，等于的意思。
w符号表示下界，大于。是大O符号和大Ω符号的结合。**
大O大Ω都是存在c，小o小w都是对于任意c
函数f ( n )代表某一算法在输入大小为n的情况下的工作量，则在n趋向∞的时候，我们将f (n)与另一行为已知的函数g(n)进行比较：
1、如果0，则称f (n)在数量级上严格小于g(n)]]></description><category></category></item><item><title><![CDATA[2021-07-01 Leetcode题解：545，915，1647，722]]></title><link>https://blog.youkuaiyun.com/twelveight/article/details/118392932</link><guid>https://blog.youkuaiyun.com/twelveight/article/details/118392932</guid><author>twelveight</author><pubDate>Thu, 01 Jul 2021 18:42:07 +0800</pubDate><description><![CDATA[915. Partition Array into Disjoint Intervals
题目大意：给定数组nums = [5,0,3,8,6]，划分成两个subarray： left &amp; right使得max{left} &lt;= min{right}
思路： 顺序记录leftmax，倒序记录minright，从左到右找到第一个满足max{left} &lt;= min{right}的划分点
class Solution {
    public int partitionDisjoint(in]]></description><category></category></item><item><title><![CDATA[【解题笔记】：LeetCode Contest 238]]></title><link>https://blog.youkuaiyun.com/twelveight/article/details/116142255</link><guid>https://blog.youkuaiyun.com/twelveight/article/details/116142255</guid><author>twelveight</author><pubDate>Mon, 26 Apr 2021 08:10:37 +0800</pubDate><description><![CDATA[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]]></description><category></category></item><item><title><![CDATA[LeetCode Contest 237]]></title><link>https://blog.youkuaiyun.com/twelveight/article/details/116142215</link><guid>https://blog.youkuaiyun.com/twelveight/article/details/116142215</guid><author>twelveight</author><pubDate>Mon, 26 Apr 2021 08:02:22 +0800</pubDate><description><![CDATA[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(]]></description><category></category></item><item><title><![CDATA[异或、异或和 的性质与应用]]></title><link>https://blog.youkuaiyun.com/twelveight/article/details/116142174</link><guid>https://blog.youkuaiyun.com/twelveight/article/details/116142174</guid><author>twelveight</author><pubDate>Mon, 26 Apr 2021 07:35:43 +0800</pubDate><description><![CDATA[异或是一种基于二进制的位运算，用符号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]]></description><category></category></item><item><title><![CDATA[JAVA(数组/list/堆)sort自定义方法总结(重写自定义方法 & Lambda表达式)]]></title><link>https://blog.youkuaiyun.com/twelveight/article/details/116142071</link><guid>https://blog.youkuaiyun.com/twelveight/article/details/116142071</guid><author>twelveight</author><pubDate>Mon, 26 Apr 2021 07:20:09 +0800</pubDate><description><![CDATA[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[], ]]></description><category></category></item><item><title><![CDATA[Arrays分类算法-Min Rewards（待完成）]]></title><link>https://blog.youkuaiyun.com/twelveight/article/details/113469443</link><guid>https://blog.youkuaiyun.com/twelveight/article/details/113469443</guid><author>twelveight</author><pubDate>Sun, 31 Jan 2021 13:52:41 +0800</pubDate><description><![CDATA[题目要求
** 解法一：**
建立空数组存储结果，全部初始化为1。 从头开始遍历数组，如果出现比之前一个小的数，则反向继续遍历，将原来的分数进行更新(更新过程中需要比较新分数和原来久分数的大小，取最大值)。如果出现比之前的数组大，则原有的数+1。继续下一个数的判断。
Time: O(n^2) Space: O(n)
代码：
import java.util.*;

class Program {
  public static int minRewards(int[] scores) {
    // Wr]]></description><category></category></item><item><title><![CDATA[Arrays分类算法-Largest Range]]></title><link>https://blog.youkuaiyun.com/twelveight/article/details/112920269</link><guid>https://blog.youkuaiyun.com/twelveight/article/details/112920269</guid><author>twelveight</author><pubDate>Thu, 21 Jan 2021 11:51:59 +0800</pubDate><description><![CDATA[题目要求
解法一：
可以通过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]]></description><category></category></item><item><title><![CDATA[Arrays分类算法-Four Number Sum(待完成)]]></title><link>https://blog.youkuaiyun.com/twelveight/article/details/112917554</link><guid>https://blog.youkuaiyun.com/twelveight/article/details/112917554</guid><author>twelveight</author><pubDate>Thu, 21 Jan 2021 10:24:29 +0800</pubDate><description><![CDATA[题目要求

解法一：
与3Sum的解法相同，需要加一层循环， 而且需要考虑[-2,-1,-1,1,1,2,2]数组里面有重复数字的可能性。
Time: O(n^3) Space: O(n)
代码：
import java.util.*;

class Program {
  public static List&lt;Integer[]&gt; fourNumberSum(int[] array, int targetSum) {
    // Write your code here.
		if (arr]]></description><category></category></item><item><title><![CDATA[Arrays分类算法-Spiral Traverse(待完成)]]></title><link>https://blog.youkuaiyun.com/twelveight/article/details/112915288</link><guid>https://blog.youkuaiyun.com/twelveight/article/details/112915288</guid><author>twelveight</author><pubDate>Thu, 21 Jan 2021 05:16:36 +0800</pubDate><description><![CDATA[题目要求
corner case：

解法一：
Iterator解法
Time: O(n) Space: O(n)
代码：
import java.util.*;

class Program {
  public static List&lt;Integer&gt; spiralTraverse(int[][] array) {
    // Write your code here.
		ArrayList&lt;Integer&gt; res = new ArrayList&lt;&gt;();
		]]></description><category></category></item><item><title><![CDATA[Arrays分类算法-Subarray Sort]]></title><link>https://blog.youkuaiyun.com/twelveight/article/details/112915274</link><guid>https://blog.youkuaiyun.com/twelveight/article/details/112915274</guid><author>twelveight</author><pubDate>Thu, 21 Jan 2021 05:11:39 +0800</pubDate><description><![CDATA[题目要求
解法一：
我们从乱序的序列出发，在乱序的序列中找出最大和最小的值，然后分别从原数组的头和尾部进行遍历，找出乱序最大最小值需要插入的点，就是需要重排序的范围.
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.]]></description><category></category></item><item><title><![CDATA[Arrays分类算法-First Duplicate Value]]></title><link>https://blog.youkuaiyun.com/twelveight/article/details/112915246</link><guid>https://blog.youkuaiyun.com/twelveight/article/details/112915246</guid><author>twelveight</author><pubDate>Thu, 21 Jan 2021 04:42:06 +0800</pubDate><description><![CDATA[题目要求
解法一：
暴力解法，找到数组中相同的两个数，然后返回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 &lt; 2) return -1;
		int ]]></description><category></category></item><item><title><![CDATA[Arrays分类算法-ArrayOf Products]]></title><link>https://blog.youkuaiyun.com/twelveight/article/details/112915190</link><guid>https://blog.youkuaiyun.com/twelveight/article/details/112915190</guid><author>twelveight</author><pubDate>Thu, 21 Jan 2021 03:53:42 +0800</pubDate><description><![CDATA[题目要求

解法一：
非常普通的暴力解法，头铁硬算出每个乘积，然后存入数组，毫无新意。
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 &lt; 2) return array;
		int[] res =]]></description><category></category></item><item><title><![CDATA[Arrays分类算法-Longest Peak]]></title><link>https://blog.youkuaiyun.com/twelveight/article/details/112915157</link><guid>https://blog.youkuaiyun.com/twelveight/article/details/112915157</guid><author>twelveight</author><pubDate>Thu, 21 Jan 2021 02:38:03 +0800</pubDate><description><![CDATA[题目要求
解法一：
本题我们可以找一个递增紧跟一个递减序列来判定一个peak序列的长度。但是这么做要记录的变化转态很多，不好实现。因此我们可以找到性质是Peak的点(大于前一个数和后一个数)，然后以peak为点向两边分别展开，数出peak序列的长度，别筛选出最大的序列长度。
Time: O(n) Space: O(1)
代码1：
import java.util.*;

class Program {
  public static int longestPeak(int[] array) {
    //]]></description><category></category></item><item><title><![CDATA[Arrays分类算法-Monotonic Array]]></title><link>https://blog.youkuaiyun.com/twelveight/article/details/112862426</link><guid>https://blog.youkuaiyun.com/twelveight/article/details/112862426</guid><author>twelveight</author><pubDate>Wed, 20 Jan 2021 13:18:13 +0800</pubDate><description><![CDATA[题目要求
解法一：
Time: O(n^2])  Space: O(1)
代码：



]]></description><category></category></item><item><title><![CDATA[Arrays分类算法-Move Element To End]]></title><link>https://blog.youkuaiyun.com/twelveight/article/details/112862258</link><guid>https://blog.youkuaiyun.com/twelveight/article/details/112862258</guid><author>twelveight</author><pubDate>Wed, 20 Jan 2021 12:44:34 +0800</pubDate><description><![CDATA[题目要求
解法一：
set两个，一头一尾，各自判断是否等于targetToMove, 然后进行逻辑判断进行交换或者移动。
Time: O(n) Space: O(1)
代码1：
import java.util.*;

class Program {
  public static List&lt;Integer&gt; moveElementToEnd(List&lt;Integer&gt; array, int toMove) {
    // Write your code here.
		if (a]]></description><category></category></item><item><title><![CDATA[Arrays分类算法-Smallest Difference]]></title><link>https://blog.youkuaiyun.com/twelveight/article/details/112862069</link><guid>https://blog.youkuaiyun.com/twelveight/article/details/112862069</guid><author>twelveight</author><pubDate>Wed, 20 Jan 2021 12:31:47 +0800</pubDate><description><![CDATA[题目要求解法一：
暴力解法，遍历每一种可能性。从而求出最小差值的组合。
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 =]]></description><category></category></item><item><title><![CDATA[Arrays分类算法-Three Number Sum]]></title><link>https://blog.youkuaiyun.com/twelveight/article/details/112776158</link><guid>https://blog.youkuaiyun.com/twelveight/article/details/112776158</guid><author>twelveight</author><pubDate>Mon, 18 Jan 2021 13:36:24 +0800</pubDate><description><![CDATA[题目要求
解法一：
与two sum的思路相同，可以用二分法搜索。只是left + right的值等于target - sum.
Time: O(n^2) Space: O(1)
代码：
import java.util.*;

class Program {
  public static List&lt;Integer[]&gt; threeNumberSum(int[] array, int targetSum) {
    // Write your code here.
		if (array =]]></description><category></category></item><item><title><![CDATA[Arrays分类算法-Validate Subsequence]]></title><link>https://blog.youkuaiyun.com/twelveight/article/details/112775620</link><guid>https://blog.youkuaiyun.com/twelveight/article/details/112775620</guid><author>twelveight</author><pubDate>Mon, 18 Jan 2021 13:30:07 +0800</pubDate><description><![CDATA[题目要求

解法一：
通过双指针，while loop 一个一个比较两数组数字的大小，最后看sequence是否都被包含在array中。
Time: O(n) Space: O(1)
代码：
import java.util.*;

class Program {
  public static boolean isValidSubsequence(List&lt;Integer&gt; array, List&lt;Integer&gt; sequence) {
    // Write your cod]]></description><category></category></item><item><title><![CDATA[Arrays分类算法-Two Number Sum]]></title><link>https://blog.youkuaiyun.com/twelveight/article/details/112774118</link><guid>https://blog.youkuaiyun.com/twelveight/article/details/112774118</guid><author>twelveight</author><pubDate>Mon, 18 Jan 2021 13:00:58 +0800</pubDate><description><![CDATA[Arrays

]]></description><category></category></item></channel></rss>