劍指offer:55-58記錄

輸入一棵二叉樹的根節點,求該樹的深度。從根節點到葉節點依次經過的節點(含根、葉節點)形成樹的一條路徑,最長路徑的長度為樹的深度。

例如:

給定二叉樹 [3,9,20,null,null,15,7],

? ? 3
? ?/ \
? 9 ?20
? ? / ?\
? ?15 ? 7
返回它的最大深度?3 。

思路:遞歸

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
class Solution {public int maxDepth(TreeNode root) {if (root == null) return 0;return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;}
}

輸入一棵二叉樹的根節點,判斷該樹是不是平衡二叉樹。如果某二叉樹中任意節點的左右子樹的深度相差不超過1,那么它就是一棵平衡二叉樹。

?

示例 1:

給定二叉樹 [3,9,20,null,null,15,7]

? ? 3
? ?/ \
? 9 ?20
? ? / ?\
? ?15 ? 7
返回 true 。

示例 2:

給定二叉樹 [1,2,2,3,3,null,null,4,4]

? ? ? ?1
? ? ? / \
? ? ?2 ? 2
? ? / \
? ?3 ? 3
? / \
?4 ? 4
返回?false 。

遞歸,-1代表不是。

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode(int x) { val = x; }* }*/
class Solution {public boolean isBalanced(TreeNode root) {return depth(root) != -1;}private int depth(TreeNode root) {if (root == null) return 0;int left = depth(root.left);if(left == -1) return -1;int right = depth(root.right);if(right == -1) return -1;return Math.abs(left - right) < 2 ? Math.max(left, right) + 1 : -1;}
}

輸入一個遞增排序的數組和一個數字s,在數組中查找兩個數,使得它們的和正好是s。如果有多對數字的和等于s,則輸出任意一對即可。

?

示例 1:

輸入:nums = [2,7,11,15], target = 9
輸出:[2,7] 或者 [7,2]
示例 2:

輸入:nums = [10,26,30,31,47,60], target = 40
輸出:[10,30] 或者 [30,10]
?

限制:

1 <= nums.length <= 10^5
1 <= nums[i]?<= 10^6

雙指針

class Solution {public int[] twoSum(int[] nums, int target) {int left=0,right=nums.length-1;while(left<right){if (nums[left]+nums[right]==target){return new int[]{nums[left],nums[right]};}else if (nums[left]+nums[right]<target)left++;elseright--;}return null;}
}

輸入一個英文句子,翻轉句子中單詞的順序,但單詞內字符的順序不變。為簡單起見,標點符號和普通字母一樣處理。例如輸入字符串"I am a student. ",則輸出"student. a am I"。

?

示例 1:

輸入: "the sky is blue"
輸出:?"blue is sky the"
示例 2:

輸入: " ?hello world! ?"
輸出:?"world! hello"
解釋: 輸入字符串可以在前面或者后面包含多余的空格,但是反轉后的字符不能包括。
示例 3:

輸入: "a good ??example"
輸出:?"example good a"
解釋: 如果兩個單詞間有多余的空格,將反轉后單詞間的空格減少到只含一個。
?

說明:

無空格字符構成一個單詞。
輸入字符串可以在前面或者后面包含多余的空格,但是反轉后的字符不能包括。
如果兩個單詞間有多余的空格,將反轉后單詞間的空格減少到只含一個。

py大法好。

class?Solution(object):def?reverseWords(self,?s):return?"?".join(s.split()[::-1])

字符串的左旋轉操作是把字符串前面的若干個字符轉移到字符串的尾部。請定義一個函數實現字符串左旋轉操作的功能。比如,輸入字符串"abcdefg"和數字2,該函數將返回左旋轉兩位得到的結果"cdefgab"。

示例 1:

輸入: s = "abcdefg", k = 2
輸出:?"cdefgab"
示例 2:

輸入: s = "lrloseumgh", k = 6
輸出:?"umghlrlose"

class Solution:def reverseLeftWords(self, s: str, n: int):return s[n:]+s[:n]

思路:可以反轉字符串,再把兩部分分別反轉,但是py太爽了。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/444116.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/444116.shtml
英文地址,請注明出處:http://en.pswp.cn/news/444116.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Map集合知識點(炸窩)

/** * 簡單的介紹一下我們接下來準備學習的集合MAP集合 * * Map集合的簡單概述&#xff1a; * 其中的健是不能進行重復的&#xff0c;而且每一健只能映射一個值&#xff0c;簡單的說就是K與V是一一對應的&#xff0c;不能有其他的關系&#xff0c; * 但是我們注意到value值是可…

劍指offer:63-66記錄

假設把某股票的價格按照時間先后順序存儲在數組中&#xff0c;請問買賣該股票一次可能獲得的最大利潤是多少&#xff1f; 示例 1: 輸入: [7,1,5,3,6,4] 輸出: 5 解釋: 在第 2 天&#xff08;股票價格 1&#xff09;的時候買入&#xff0c;在第 5 天&#xff08;股票價格 6&a…

【大總結3】leetcode解題總覽(算法、劍指offer、SQL、多線程、shell)

3/22更新 劍指offer 題目鏈接 建議大部分題都會做&#xff0c;都能比較快速且準確的寫出來。關于做題方式&#xff0c;我的建議是&#xff1a;一道一道刷即可&#xff0c;因為難度一般&#xff0c;不用系統的學習什么知識&#xff0c;遇到實在不會的就跳過即可。 我這里寫了…

逆序存儲【數據結構】

C語言中malloc是動態內存分配函數。 函數原型&#xff1a;void malloc(unsigned int num_bytes); 參數&#xff1a;num_bytes 是無符號整型&#xff0c;用于表示分配的字節數。 返回值&#xff1a;如果分配成功則返回指向被分配內存的指針(此存儲區中的初始值不確定)&#xff0…

為什么 main 方法是 public static void ?

main 方法是我們學習Java編程語言時知道的第一個方法&#xff0c;你是否曾經想過為什么 main 方法是 public、static、void 的。當然&#xff0c;很多人首先學的是C和C&#xff0c;但是在Java中main方法與前者有些細微的不同&#xff0c;它不會返回任何值&#xff0c;為什么 ma…

返回地址【數據結構】

小問題&#xff1f; 1.我們是如何根據地址值來找到我們對應的數據的&#xff1f; 詳細陳述一下&#xff1a;當我們開辟一個整數類型&#xff0c;取名為a&#xff0c;假設地址空間是從數值為2000進行存儲&#xff0c;并且我們假設整形占用4個字節&#xff0c;那么我們在內存中需…

【超級詳細的小白教程】Hexo 搭建自己的博客

– 前言 這是一篇有關如何使用 Github Pages 和 Hexo 搭建屬于自己獨立博客的詳盡教程&#xff0c;本人是軟件工程專業本科生&#xff0c;目前只學習了C和C編程語言&#xff0c;對網站開發的有關知識幾乎為零&#xff0c;這也是我搭建好自己的博客之后寫的第一篇博客&#xff…

面向對象思想精華總結

一、三大特性 封裝繼承多態 二、類圖 泛化關系 (Generalization)實現關系 (Realization)聚合關系 (Aggregation)組合關系 (Composition)關聯關系 (Association)依賴關系 (Dependency) 三、設計原則 S.O.L.I.D其他常見原則 參考資料 一、三大特性 封裝 利用抽象數據類型將數據…

數組名與指向數組的指針之間的聯系與區別【數據結構】

我們遇到一個非常棘手的問題&#xff0c;這個問題就是&#xff0c;對于一堆數據來說&#xff0c;我們進行存儲&#xff0c;放到一個指定的倉庫當中&#xff0c;先前我們使用數組加加標的形式進行訪問倉庫當中的元素位置&#xff0c;但是呢&#xff0c;現在我們使用的是一個指針…

Struts2的action中處理JSONP方式提交的中文亂碼問題:

昨天在做公司網站的時候出現了一個中文亂碼問題&#xff0c;讓我郁悶了一晚上和一上午&#xff0c;最后在網友的提示下&#xff0c;我終于解決了&#xff0c;現在寫出來供后來的兄弟們參考&#xff1a; 1.問題是這樣的&#xff0c;就是客戶端是以JSONP的方式提交的數據&#x…

leetcode509. 斐波那契數(矩陣快速冪)

斐波那契數&#xff0c;通常用 F(n) 表示&#xff0c;形成的序列稱為斐波那契數列。該數列由 0 和 1 開始&#xff0c;后面的每一項數字都是前面兩項數字的和。也就是&#xff1a; F(0) 0, F(1) 1 F(N) F(N - 1) F(N - 2), 其中 N > 1. 給定 N&#xff0c;計算 F(N)。…

insert函數的修改,

我們來看一下圖片當中的第2個圓圈&#xff0c;為什么使用size來相加呢&#xff1f;我們知道一開始我們定義的初始空間為init_size;我們想一下啊&#xff0c;如果是第1次進行空間的增加&#xff0c;那么我們使用InIt來進行相加是可以的&#xff0c;但是當第2次想加我們再想開辟空…

leetcode520. py解字符串真是太殘暴了

給定一個單詞&#xff0c;你需要判斷單詞的大寫使用是否正確。 我們定義&#xff0c;在以下情況時&#xff0c;單詞的大寫用法是正確的&#xff1a; 全部字母都是大寫&#xff0c;比如"USA"。 單詞中所有字母都不是大寫&#xff0c;比如"leetcode"。 如果…

【數據結構】線性表大咖

循環鏈表的介紹 概念&#xff1a;鏈表的最后一個節點的指針&#xff0c;由原來的 空指針變成指向第1個節點的鏈表。 類比&#xff1a;我們進行串珠子的操作&#xff0c;將首尾通過線進行連接&#xff0c;同樣我們的鏈表就是通過指針指向的方式進行連接&#xff0c;使其成為一…

leetcode551. 學生出勤記錄 I

給定一個字符串來代表一個學生的出勤記錄&#xff0c;這個記錄僅包含以下三個字符&#xff1a; A : Absent&#xff0c;缺勤 L : Late&#xff0c;遲到 P : Present&#xff0c;到場 如果一個學生的出勤記錄中不超過一個A(缺勤)并且不超過兩個連續的L(遲到),那么這個學生會被獎…

一元多項式的表示和相加【數據結構】

一元多項式的表示和相加 運算只是一個定義&#xff0c;一切的一切&#xff0c;到最后都必須歸咎于存儲結構當中&#xff0c;實現物理存儲&#xff0c;一元多項式包括數據對象數據關系以及數據之間的各種操作&#xff0c; 一元多項式的實現&#xff1a;用帶表頭結點的有序鏈表…

線性結構基本概念【數據結構】F

線性表的概念&#xff1a;線性表是一種最簡單的線性結構&#xff0c;線性結構是單個數據元素的有序結合 線性結構的基本特征為&#xff1a; 第一&#xff0c;集合中必存在唯一的一個第1元素&#xff0c; 第二&#xff0c;集合中必存在唯一的一個最后元素&#xff0c; 第三&am…

leetcode589. N叉樹的前序遍歷

給定一個 N 叉樹&#xff0c;返回其節點值的前序遍歷。 例如&#xff0c;給定一個 3叉樹 : 返回其前序遍歷: [1,3,5,6,2,4]。 思路&#xff1a;先放入自己&#xff0c;再依次遍歷孩子。 /* // Definition for a Node. class Node {public int val;public List<Node> c…

ORA-00001 違反唯一約束條件

程序跑出下面的異常&#xff1a;com.ibm.websphere.ce.cm.DuplicateKeyException: ORA-00001: 違反唯一約束條件 (EOMS3.SYS_C0024492)&#xff0c;參考下面的文章了解到我的程序可能是序列的問題。&#xff08;果然是序列產生的最小值設置的太小&#xff0c;將序列值設置大之后…

順序結構實現【數據結構】

雖然在數據結構當中是先出現的線性表&#xff0c;然后出現的是數組 一&#xff1a;線性表的順序存儲結構 順序映象&#xff1a;用一組地址連續的存儲單元依次存放線性表當中的數據元素 線性表的起始地址&#xff1a;線性存儲第一個數據元素的地址&#xff0c;我們也稱作是基地址…