最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

劍指Offer之Java算法習(xí)題精講鏈表與二叉樹(shù)專項(xiàng)訓(xùn)練

 更新時(shí)間:2022年03月22日 08:38:17   作者:明天一定.  
跟著思路走,之后從簡(jiǎn)單題入手,反復(fù)去看,做過(guò)之后可能會(huì)忘記,之后再做一次,記不住就反復(fù)做,反復(fù)尋求思路和規(guī)律,慢慢積累就會(huì)發(fā)現(xiàn)質(zhì)的變化

題目一

鏈表題——反轉(zhuǎn)鏈表

根據(jù)單鏈表的頭節(jié)點(diǎn)head來(lái)返回反轉(zhuǎn)后的鏈表

具體題目如下

解法

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode reverseList(ListNode head) {
        ListNode pre,cur,nxt;
        pre = null;
        cur = head;
        nxt = head;
        while(cur!=null){
            nxt = cur.next;
            cur.next = pre;
            pre = cur;
            cur = nxt;
        }
        return pre;
    }
}

題目二

鏈表題——反轉(zhuǎn)鏈表

按照一定數(shù)量的節(jié)點(diǎn)來(lái)進(jìn)行反轉(zhuǎn)并返回反轉(zhuǎn)之后的鏈表

具體題目如下

解法

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode reverseKGroup(ListNode head, int k) {
         if (head == null) return null;
         ListNode a, b;
         a = b = head;
         for (int i = 0; i < k; i++) {
            if (b == null) return head;
             b = b.next;
         }
         ListNode newHead = reverse(a, b);
         a.next = reverseKGroup(b, k);
         return newHead;
    }
    ListNode reverse(ListNode a, ListNode b) {
        ListNode pre,cur,nxt;
        pre = null;
        cur = a;
        nxt = a;
        while(cur!=b){
            nxt = cur.next;
            cur.next = pre;
            pre = cur;
            cur = nxt;
        }
        return pre;
    }
}

題目三

鏈表題——回文鏈表

根據(jù)單鏈表的頭節(jié)點(diǎn)head來(lái)判斷該鏈表是否是回文鏈表,并返回結(jié)果

具體題目如下

解法:后序遍歷與left比較

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    ListNode left;
    public boolean isPalindrome(ListNode head) {
        left = head;
        return traverse(head);
    }
    boolean traverse(ListNode right){
        if (right == null) return true;
        boolean res = traverse(right.next);
        res = res && (right.val == left.val);
        left = left.next;
        return res;
    }
}

題目四

二叉樹(shù)題——翻轉(zhuǎn)二叉樹(shù)

根據(jù)所給的二叉樹(shù)根節(jié)點(diǎn)root來(lái)翻轉(zhuǎn)此二叉樹(shù),并返回翻轉(zhuǎn)后的二叉樹(shù)根節(jié)點(diǎn)

具體題目如下

 解法

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public TreeNode invertTree(TreeNode root) {
        if(root==null){
            return null;
        }
        TreeNode lf = invertTree(root.left);
        TreeNode rg = invertTree(root.right);
        root.left = rg;
        root.right = lf;
        return root;
    }
}

題目五

二叉樹(shù)題——填充節(jié)點(diǎn)

給定一個(gè)完美二叉樹(shù),填充該二叉樹(shù)每個(gè)節(jié)點(diǎn)的下一個(gè)右側(cè)節(jié)點(diǎn)指針

具體題目如下

解法

/*
// Definition for a Node.
class Node {
    public int val;
    public Node left;
    public Node right;
    public Node next;
    public Node() {}
    
    public Node(int _val) {
        val = _val;
    }
    public Node(int _val, Node _left, Node _right, Node _next) {
        val = _val;
        left = _left;
        right = _right;
        next = _next;
    }
};
*/
 
class Solution {
    public Node connect(Node root) {
        if(root==null) return null;
        method(root.left,root.right);
        return root;
    }
    public void method(Node left,Node right){
        if (left == null || right == null) {
            return;
        }
        left.next = right;
        method(left.left,left.right);
        method(right.left,right.right);
        method(left.right,right.left);
    }
}

題目六

二叉樹(shù)鏈表題——將二叉樹(shù)展開(kāi)為鏈表

根據(jù)給定的二叉樹(shù)根節(jié)點(diǎn)root,將此二叉樹(shù)展開(kāi)為單鏈表

具體題目如下

解法

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    public void flatten(TreeNode root) {
        if (root == null) return;
 
        flatten(root.left);
        flatten(root.right);
 
        TreeNode left = root.left;
        TreeNode right = root.right;
 
        root.left = null;
        root.right = left;
 
        TreeNode p = root;
        while (p.right != null) {
            p = p.right;
        }
        p.right = right;
    }
}

到此這篇關(guān)于劍指Offer之Java算法習(xí)題精講鏈表與二叉樹(shù)專項(xiàng)訓(xùn)練的文章就介紹到這了,更多相關(guān)Java 鏈表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring復(fù)雜對(duì)象創(chuàng)建的方式小結(jié)

    Spring復(fù)雜對(duì)象創(chuàng)建的方式小結(jié)

    這篇文章主要介紹了Spring復(fù)雜對(duì)象創(chuàng)建的三種方式,現(xiàn)在使用Spring如何創(chuàng)建這種類型的對(duì)象?Spring中提供了三種方法來(lái)創(chuàng)建復(fù)雜對(duì)象,需要的朋友可以參考下
    2022-01-01
  • Java初學(xué)者常問(wèn)的問(wèn)題(推薦)

    Java初學(xué)者常問(wèn)的問(wèn)題(推薦)

    本文介紹一些Java初學(xué)者常問(wèn)的問(wèn)題,很多朋友對(duì)可以用%除以一個(gè)小數(shù)嗎? a += b 和 a = a + b 的效果有區(qū)別嗎? 聲明一個(gè)數(shù)組為什么需要花費(fèi)大量時(shí)間? 為什么Java庫(kù)不用隨機(jī)pivot方式的快速排序?等等一系列問(wèn)題有疑惑,下面就通過(guò)本文給大家詳細(xì)介紹下
    2017-03-03
  • java使用MulticastSocket實(shí)現(xiàn)多點(diǎn)廣播

    java使用MulticastSocket實(shí)現(xiàn)多點(diǎn)廣播

    這篇文章主要為大家詳細(xì)介紹了java使用MulticastSocket實(shí)現(xiàn)多點(diǎn)廣播,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • java streamfilter list 過(guò)濾的實(shí)現(xiàn)

    java streamfilter list 過(guò)濾的實(shí)現(xiàn)

    Java Stream API中的filter方法是過(guò)濾List集合中元素的一個(gè)強(qiáng)大工具,可以輕松地根據(jù)自定義條件篩選出符合要求的元素,本文就來(lái)介紹一下java streamfilter list 過(guò)濾的實(shí)現(xiàn),感興趣的可以了解一下
    2025-03-03
  • SpringBoot整合Servlet和Filter和Listener組件詳解

    SpringBoot整合Servlet和Filter和Listener組件詳解

    這篇文章主要介紹了SpringBoot整合Servlet和Filter和Listener組件詳解,在整合某報(bào)表插件時(shí)就需要使用Servlet,Spring Boot中對(duì)于整合這些基本的Web組件也提供了很好的支持,需要的朋友可以參考下
    2024-01-01
  • 詳解Java實(shí)現(xiàn)批量壓縮圖片裁剪壓縮多種尺寸縮略圖一鍵批量上傳圖片

    詳解Java實(shí)現(xiàn)批量壓縮圖片裁剪壓縮多種尺寸縮略圖一鍵批量上傳圖片

    這篇文章主要介紹了Java實(shí)現(xiàn)批量壓縮圖片裁剪壓縮多種尺寸縮略圖一鍵批量上傳圖片,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • spring使用@Async注解導(dǎo)致循環(huán)依賴問(wèn)題異常的排查記錄

    spring使用@Async注解導(dǎo)致循環(huán)依賴問(wèn)題異常的排查記錄

    這篇文章主要介紹了spring使用@Async注解導(dǎo)致循環(huán)依賴問(wèn)題異常的排查記錄,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 基于Spring開(kāi)發(fā)之自定義標(biāo)簽及其解析

    基于Spring開(kāi)發(fā)之自定義標(biāo)簽及其解析

    Spring框架是現(xiàn)在Java最流行的開(kāi)源框架之一,需要實(shí)現(xiàn)一些自定義的標(biāo)簽,主要是方便使用我們框架的人能夠快速、簡(jiǎn)單進(jìn)行配置,有興趣的可以了解一下。
    2017-04-04
  • 淺談Java序列化和hessian序列化的差異

    淺談Java序列化和hessian序列化的差異

    這篇文章主要通過(guò)對(duì)二者簡(jiǎn)單的實(shí)現(xiàn)方式的對(duì)比,介紹了Java序列化和hessian序列化的差異,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-09-09
  • Java探索之Feign入門(mén)使用詳解

    Java探索之Feign入門(mén)使用詳解

    這篇文章主要介紹了Java探索之Feign入門(mén)使用詳解,關(guān)于feign,我也是第一次遇到,于是在網(wǎng)上搜集了相關(guān)文章,這篇比較詳細(xì),介紹了其簡(jiǎn)介,選擇feign的原因以及其他相關(guān)內(nèi)容,需要的朋友可以參考下。
    2017-10-10

最新評(píng)論

沈丘县| 盐源县| 平邑县| 镇江市| 仪征市| 曲阳县| 密云县| 平泉县| 和田市| 锦屏县| 搜索| 西和县| 右玉县| 教育| 武胜县| 衡阳市| 郓城县| 泽普县| 奉节县| 金山区| 安塞县| 仪征市| 扶绥县| 彩票| 聊城市| 庆元县| 湾仔区| 闽侯县| 元朗区| 望江县| 凌云县| 三都| 庆云县| 定安县| 昭苏县| 乐亭县| 静安区| 武平县| 陆丰市| 会同县| 云安县|