日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

剑指offer:55-58记录

發(fā)布時(shí)間:2023/12/13 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 剑指offer:55-58记录 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

輸入一棵二叉樹(shù)的根節(jié)點(diǎn),求該樹(shù)的深度。從根節(jié)點(diǎn)到葉節(jié)點(diǎn)依次經(jīng)過(guò)的節(jié)點(diǎn)(含根、葉節(jié)點(diǎn))形成樹(shù)的一條路徑,最長(zhǎng)路徑的長(zhǎng)度為樹(shù)的深度。

例如:

給定二叉樹(shù) [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;} }

輸入一棵二叉樹(shù)的根節(jié)點(diǎn),判斷該樹(shù)是不是平衡二叉樹(shù)。如果某二叉樹(shù)中任意節(jié)點(diǎn)的左右子樹(shù)的深度相差不超過(guò)1,那么它就是一棵平衡二叉樹(shù)。

?

示例 1:

給定二叉樹(shù) [3,9,20,null,null,15,7]

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

示例 2:

給定二叉樹(shù) [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;} }

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

?

示例 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;} }

輸入一個(gè)英文句子,翻轉(zhuǎn)句子中單詞的順序,但單詞內(nèi)字符的順序不變。為簡(jiǎn)單起見(jiàn),標(biāo)點(diǎn)符號(hào)和普通字母一樣處理。例如輸入字符串"I am a student. ",則輸出"student. a am I"。

?

示例 1:

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

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

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

說(shuō)明:

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

py大法好。

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

字符串的左旋轉(zhuǎn)操作是把字符串前面的若干個(gè)字符轉(zhuǎn)移到字符串的尾部。請(qǐng)定義一個(gè)函數(shù)實(shí)現(xiàn)字符串左旋轉(zhuǎn)操作的功能。比如,輸入字符串"abcdefg"和數(shù)字2,該函數(shù)將返回左旋轉(zhuǎn)兩位得到的結(jié)果"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]

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

總結(jié)

以上是生活随笔為你收集整理的剑指offer:55-58记录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。