输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。

例如:

给定二叉树 [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太爽了。

剑指offer:55-58记录相关推荐

  1. 【LeetCode】剑指 Offer 55 - II. 平衡二叉树

    [LeetCode]剑指 Offer 55 - II. 平衡二叉树 文章目录 [LeetCode]剑指 Offer 55 - II. 平衡二叉树 一.后序遍历 + 剪枝(从底至顶) 一.后序遍历 + ...

  2. 【LeetCode】剑指 Offer 55 - I. 二叉树的深度

    [LeetCode]剑指 Offer 55 - I. 二叉树的深度 文章目录 [LeetCode]剑指 Offer 55 - I. 二叉树的深度 一.后序遍历(DFS) 二.层序遍历 一.后序遍历(D ...

  3. 剑指offer刷题记录 python3 Java

    剑指offer刷题记录 python3 Java 剑指 Offer 09. 用两个栈实现队列 剑指 Offer 10- I. 斐波那契数列 剑指 Offer 03. 数组中重复的数字 [★]剑指 Of ...

  4. 剑指offer做题记录

    1. 剑指 Offer 03. 数组中重复的数字   力扣 class Solution { public:int findRepeatNumber(vector<int>& nu ...

  5. 剑指Offer 刷题记录

    文章目录 剑指offer题目 01. 二维数组中的查找 02. 替换空格 03. 从尾到头打印链表 04. 重建二叉树 05. 两个堆栈模拟一个队列 06. 旋转数组的最小数字 07. 斐波那契数列 ...

  6. 剑指offer刷题记录(上)

    记录刷题过程,方便自己后期回顾 题目来自<剑指offer>,在牛客上OC,思路大多来自剑指offer,偶尔来自自己的碎碎念,代码自己瞎写的,如果有更优的方法请告诉我,谢谢大佬们 语言:py ...

  7. 剑指offer:39-42记录

    数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字. 你可以假设数组是非空的,并且给定的数组总是存在多数元素. 示例 1: 输入: [1, 2, 3, 2, 2, 2, 5, 4, 2] 输 ...

  8. 剑指offer:12-17记录

    请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左.右.上.下移动一格.如果一条路径经过了矩阵的某一格,那么该路径不能再 ...

  9. string类函数和牛客网剑指offer刷题记录

    1.strcat char* strcat(char *strDest,const char *strSrc){assert(strDest && strSrc);char *p = ...

  10. LeetCode Algorithm 剑指 Offer 55 - II. 平衡二叉树

    55 - II. 平衡二叉树 Ideas 这题直接扣平衡二叉树的定义就可以了,需要写一个辅助函数用来计算二叉树的高度,然后计算根节点左右子树的高度差,满足深度相差不超过1,那么它就是一棵平衡二叉树. ...

最新文章

  1. 作为一名后端开发者,你需要学习和掌握的技术栈都有哪些呢?
  2. 如何制作流畅有力的游戏动画+Skullgirls案例分析
  3. 学习笔记(18):Python网络编程并发编程-守护进程
  4. SpringBoot时间戳与MySql数据库记录相差14小时排错
  5. flash 与数据库 图解
  6. Web开发面临的挑战主要有哪些?
  7. 使用 web storage 制作简单留言本
  8. linux关闭的时候出现异常: java.net.ConnectException: 拒绝连接 (Connection refused)
  9. mysql8.0.15源码linux_源码安装mysql8.0.20
  10. CocoaPods管理第三方
  11. paip.输入法编程---增加码表类型
  12. 最新版2017安装教程
  13. BRVAH官方使用指南(持续更新)
  14. 秋招之前实习面经汇总
  15. 利用 Python 实现简单的基于用户的商品推荐模型
  16. dlna 服务器 性能,dlna 使用体验,供大家参考,欢迎交流
  17. vray许可服务器信息怎么看不到,VRay for sketchup的许可证问题怎么解决?
  18. 怎么用快捷键快速切换电脑
  19. word交叉引用后,移动文章结构,修改引用顺序到符合引用先后
  20. C语言无符号有符号比较问题总结

热门文章

  1. ArcGIS将CAD等高线转换为TIN/DEM数据
  2. java ldap 分页_具有从属引用的 LDAP 分页查询未正确处理
  3. java语言实现一个长度为n_Java语言实现求解一元n次多项式的方法示例[Java代码]...
  4. xLite连接asterisk提示sip408错误
  5. x-lite asterisk 成功实现视频通话
  6. WINCE恢复默认HIVE注册表的方法
  7. numpy读取csv_Numpy——IO操作与数据处理
  8. 计算机指令int,汇编入门学习笔记 (十二)—— int指令、端口
  9. 【转】二维异形件排版算法介绍(二)
  10. WSS 数据库表中的 UserInfo 表中的 tp_SystemId 字段的使用