<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qch60925的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qch60925</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qch60925]]></copyright><item><title><![CDATA[一大堆字符串/公共子串/前缀/回文串]]></title><link>https://blog.youkuaiyun.com/qch60925/article/details/117479889</link><guid>https://blog.youkuaiyun.com/qch60925/article/details/117479889</guid><author>qch60925</author><pubDate>Wed, 02 Jun 2021 19:18:21 +0800</pubDate><description><![CDATA[2、公共子串
2.1字符串A是否含有字符串B
    int m = haystack.length();
    int n=needle.length();
    if(n==0) return 0;
    for(int i=0;i&lt;m-n+1;i++){ 
        int k = i;
        boolean flag = true;
        for(int j=0;j&lt;n;j++){
             if(haystack.charAt(k++)!]]></description><category></category></item><item><title><![CDATA[二分查找普通/缺失数字/三数值和]]></title><link>https://blog.youkuaiyun.com/qch60925/article/details/117479567</link><guid>https://blog.youkuaiyun.com/qch60925/article/details/117479567</guid><author>qch60925</author><pubDate>Wed, 02 Jun 2021 19:11:23 +0800</pubDate><description><![CDATA[找出缺失的数字
public class Solution {
    public int solve (int[] a) {
        int left = 0,right = a.length-1;
        while(left&lt;right){
            int mid = (left+right)/2;
            if(a[mid]==mid) left=mid+1;
            else right = mid-1;
        }
]]></description><category></category></item><item><title><![CDATA[链表倒数第k个/找出和删除]]></title><link>https://blog.youkuaiyun.com/qch60925/article/details/117478816</link><guid>https://blog.youkuaiyun.com/qch60925/article/details/117478816</guid><author>qch60925</author><pubDate>Wed, 02 Jun 2021 18:48:25 +0800</pubDate><description><![CDATA[找出链表倒数第k个节点
        if(pHead==null) return null;
        ListNode slow = pHead;
        ListNode fast = pHead;
        while(fast!=null&amp;&amp;k&gt;0){
            fast = fast.next;
            k--;
        }
        if(k!=0) return null;
        while(f]]></description><category></category></item><item><title><![CDATA[力扣0/1背包问题：416/494]]></title><link>https://blog.youkuaiyun.com/qch60925/article/details/117230895</link><guid>https://blog.youkuaiyun.com/qch60925/article/details/117230895</guid><author>qch60925</author><pubDate>Mon, 24 May 2021 20:46:45 +0800</pubDate><description><![CDATA[背包问题；
给你一个整数数组 nums 和一个整数 target 。
向数组中的每个整数前添加 ‘+’ 或 ‘-’ ，然后串联起所有整数，可以构造一个 表达式 ：
例如，nums = [2, 1] ，可以在 2 之前添加 ‘+’ ，在 1 之前添加 ‘-’ ，然后串联起来得到表达式 “+2-1” 。
返回可以通过上述方法构造的、运算结果等于 target 的不同 表达式 的数目。
public int findTargetSumWays(int[] nums, int S) {
        int su]]></description><category></category></item><item><title><![CDATA[字符串的压缩和解压缩-力扣443/394]]></title><link>https://blog.youkuaiyun.com/qch60925/article/details/117220014</link><guid>https://blog.youkuaiyun.com/qch60925/article/details/117220014</guid><author>qch60925</author><pubDate>Mon, 24 May 2021 15:10:52 +0800</pubDate><description><![CDATA[字符串解码力扣-394
一个栈存储数字，一个栈存储“】”之前遍历过的ans
访问到数字：
  num=number；

访问到字符串：
ans.append()

访问到“【”：
 数字入栈，ans入栈，内容清空；

访问到“】”：
数字出栈，temp.append（pop）遍历;
          temp.append(多少次)
         ans = temp;

代码如下：
public String decodeString(String s) {
        Stack&lt;Int]]></description><category></category></item><item><title><![CDATA[123的全排列力扣dfs]]></title><link>https://blog.youkuaiyun.com/qch60925/article/details/117047730</link><guid>https://blog.youkuaiyun.com/qch60925/article/details/117047730</guid><author>qch60925</author><pubDate>Wed, 19 May 2021 21:55:38 +0800</pubDate><description><![CDATA[public List&lt;List&lt;Integer&gt;&gt; permute(int[] nums) {
        List&lt;List&lt;Integer&gt;&gt; list = new ArrayList&lt;&gt;();
        List&lt;Integer&gt; list1=new ArrayList&lt;&gt;();
        dfs(nums,list,list1);
        return list;
    }
    pub]]></description><category></category></item><item><title><![CDATA[力扣19--DFS-电话号码的组合]]></title><link>https://blog.youkuaiyun.com/qch60925/article/details/117035108</link><guid>https://blog.youkuaiyun.com/qch60925/article/details/117035108</guid><author>qch60925</author><pubDate>Wed, 19 May 2021 21:54:35 +0800</pubDate><description><![CDATA[public List&lt;String&gt; letterCombinations(String digits) {
        if(digits.length()==0) return ans;
        dfs(digits,new StringBuilder(),0);
        return ans;

    }
    public void dfs(String s, StringBuilder res, int index){
        //递归终止条件
   ]]></description><category></category></item><item><title><![CDATA[最长连续递增序列---动态规划]]></title><link>https://blog.youkuaiyun.com/qch60925/article/details/116162687</link><guid>https://blog.youkuaiyun.com/qch60925/article/details/116162687</guid><author>qch60925</author><pubDate>Mon, 26 Apr 2021 17:01:41 +0800</pubDate><description><![CDATA[返回递增长度
 dp[0] = 1;
    int ans = 1;
    for(int i=1;i&lt;len;i++){
        dp[i] = 1;
        for(int j=0;j&lt;i;j++){
            if(nums[j]&lt;nums[i]&amp;&amp;j&lt;i){
                dp[i] = Math.max(dp[j]+1,dp[i]);}}
        ans = Math.max(ans,dp[i]);]]></description><category></category></item><item><title><![CDATA[下一个排列---力扣31]]></title><link>https://blog.youkuaiyun.com/qch60925/article/details/116138991</link><guid>https://blog.youkuaiyun.com/qch60925/article/details/116138991</guid><author>qch60925</author><pubDate>Sun, 25 Apr 2021 21:49:33 +0800</pubDate><description><![CDATA[下一个排列：

1从后向前查找第一个相邻升序的元素对 (i,j)，满足 A[i] &lt; A[j]。此时 [j,end) 必然是降序
2.在 [j,end) 从后向前查找第一个满足 A[i] &lt; A[k] 的 k。
3.将 A[i] 与 A[k] 交换，可以断定这时 [j,end) 必然是降序，逆置 [j,end)，使其升序

128   5764
128   6754
128   6457
class Solution {
    public void nextPermutation(int[]]]></description><category></category></item><item><title><![CDATA[删除链表中重复元素]]></title><link>https://blog.youkuaiyun.com/qch60925/article/details/115921000</link><guid>https://blog.youkuaiyun.com/qch60925/article/details/115921000</guid><author>qch60925</author><pubDate>Tue, 20 Apr 2021 22:34:58 +0800</pubDate><description><![CDATA[删除链表中重复元素
ListNode cur = head;
        while(cur.next!=null){
            if(cur.val!=cur.next.val){
                cur = cur.next;
            }
            else{
                cur.next=cur.next.next;
            }
            
        }
        return]]></description><category></category></item><item><title><![CDATA[2-两数之和链表进位]]></title><link>https://blog.youkuaiyun.com/qch60925/article/details/115750499</link><guid>https://blog.youkuaiyun.com/qch60925/article/details/115750499</guid><author>qch60925</author><pubDate>Fri, 16 Apr 2021 10:33:48 +0800</pubDate><description><![CDATA[两数之和
力扣第二题 终于做完了
主要是进位；
ListNode dummy = new ListNode(0);
        ListNode cur = dummy;
        int carry = 0;
        while(l1!=null||l2!=null){
            int x = l1==null?0:l1.val;
            int y = l2==null?0:l2.val;
            int sum = x+y+carry;]]></description><category></category></item><item><title><![CDATA[452--射气球--贪心]]></title><link>https://blog.youkuaiyun.com/qch60925/article/details/115335526</link><guid>https://blog.youkuaiyun.com/qch60925/article/details/115335526</guid><author>qch60925</author><pubDate>Tue, 30 Mar 2021 20:46:43 +0800</pubDate><description><![CDATA[if(points==null||points.length==0) return 0;
        //右边界排序；
        Arrays.sort(points,(a,b)-&gt; a[1]&gt;b[1]?1:-1);
        int count = 1;
        int pos = points[0][1];
        for(int i=1;i&lt;points.length;i++){
            if(points[i][0]&gt;pos).]]></description><category></category></item><item><title><![CDATA[力扣198-打家劫舍]]></title><link>https://blog.youkuaiyun.com/qch60925/article/details/115328960</link><guid>https://blog.youkuaiyun.com/qch60925/article/details/115328960</guid><author>qch60925</author><pubDate>Tue, 30 Mar 2021 16:26:43 +0800</pubDate><description><![CDATA[动态规划
   //只有一间房，两间房；
    if(nums.length&lt;=1) return nums[0];
    int[] dp = new int[nums.length];
    dp[0]=nums[0];
    dp[1] = Math.max(nums[0],nums[1]);
    for(int i=2;i&lt;nums.length;i++){
        dp[i] = Math.max(dp[i-2]+nums[i],dp[i-1]);
    }
  ]]></description><category></category></item><item><title><![CDATA[排序算法整理]]></title><link>https://blog.youkuaiyun.com/qch60925/article/details/115254782</link><guid>https://blog.youkuaiyun.com/qch60925/article/details/115254782</guid><author>qch60925</author><pubDate>Fri, 26 Mar 2021 21:20:03 +0800</pubDate><description><![CDATA[快排
public void quickSort(int[] arr, int left, int right) {
        if(left&gt;=right) return;
        int cur = arr[left];
        int i=left,j=right;
        while(i&lt;j){
            while(i&lt;j&amp;&amp;arr[j]&gt;=cur) j--;
            while(i&lt;j&am]]></description><category></category></item><item><title><![CDATA[剑指54-二叉树第k大的节点（中序遍历）]]></title><link>https://blog.youkuaiyun.com/qch60925/article/details/115167984</link><guid>https://blog.youkuaiyun.com/qch60925/article/details/115167984</guid><author>qch60925</author><pubDate>Wed, 24 Mar 2021 16:20:09 +0800</pubDate><description><![CDATA[右根左
class Solution {
    int ans = 0,count=0;
    public int kthLargest(TreeNode root, int k) {
        inorder(root,k);
        return ans;
    }
    public void inorder(TreeNode root,int k){
        if(root==null) return;
        if(root.right!=null) ino]]></description><category></category></item><item><title><![CDATA[剑指offer-53-找出有序数组的重复数字/缺失数字]]></title><link>https://blog.youkuaiyun.com/qch60925/article/details/115142755</link><guid>https://blog.youkuaiyun.com/qch60925/article/details/115142755</guid><author>qch60925</author><pubDate>Tue, 23 Mar 2021 20:42:18 +0800</pubDate><description><![CDATA[二分法解决有序数组问题
找出缺失的数字
public int missingNumber(int[] nums) {
        int left=0,right = nums.length-1;
        while(left&lt;right){
            int mid = (left+right)/2;
            if(nums[mid]!=mid) right=mid;
            else left=mid+1;
        }
      ]]></description><category></category></item><item><title><![CDATA[剑指offer38-字符串排列]]></title><link>https://blog.youkuaiyun.com/qch60925/article/details/115112862</link><guid>https://blog.youkuaiyun.com/qch60925/article/details/115112862</guid><author>qch60925</author><pubDate>Tue, 23 Mar 2021 16:17:43 +0800</pubDate><description><![CDATA[class Solution {
    List&lt;String&gt; res = new LinkedList&lt;&gt;();
    char[] c;
    public String[] permutation(String s) {
        c = s.toCharArray();
        dfs(0);
        return res.toArray(new String[res.size()]);
    }
    void dfs(int x) {
 ]]></description><category></category></item><item><title><![CDATA[剑指-12：矩阵中的路径-太难了]]></title><link>https://blog.youkuaiyun.com/qch60925/article/details/115096904</link><guid>https://blog.youkuaiyun.com/qch60925/article/details/115096904</guid><author>qch60925</author><pubDate>Mon, 22 Mar 2021 21:55:32 +0800</pubDate><description><![CDATA[回溯递归的办法解决
 public boolean exist(char[][] board, String word) {
    //字符串转化为字符数组
    char[] words = word.toCharArray();
    for(int i = 0; i &lt; board.length; i++) {
        for(int j = 0; j &lt; board[0].length; j++) {
            if(dfs(board, words, i, ]]></description><category></category></item><item><title><![CDATA[剑指14-割绳子]]></title><link>https://blog.youkuaiyun.com/qch60925/article/details/115086192</link><guid>https://blog.youkuaiyun.com/qch60925/article/details/115086192</guid><author>qch60925</author><pubDate>Mon, 22 Mar 2021 19:55:44 +0800</pubDate><description><![CDATA[动态规划
        int[] dp = new int[n+1];
        dp[2] = 1;
        for(int i=3;i&lt;n+1;i++){
            //第一次割j=2;
            for(int j=2;j&lt;i;j++){
                dp[i] = Math.max(dp[i],Math.max(j*(i-j),j*dp[i-j]));
            }
        }
        ret]]></description><category></category></item><item><title><![CDATA[剑指-42-连续最大和]]></title><link>https://blog.youkuaiyun.com/qch60925/article/details/115015537</link><guid>https://blog.youkuaiyun.com/qch60925/article/details/115015537</guid><author>qch60925</author><pubDate>Sat, 20 Mar 2021 15:21:36 +0800</pubDate><description><![CDATA[1.正常传统方法
        int sum = 0;
        int ans = 0;
        for(int i = 0;i&lt;nums.length;i++){
            if(sum&gt;0){
                sum+=nums[i];
            }
            else sum = nums[i];
            ans = Math.max(ans,sum);
        }
        ret]]></description><category></category></item></channel></rss>