剑指offer计划19( 搜索与回溯算法中等)---java
1.1、题目1
剑指 Offer 64. 求1+2+…+n
1.2、解法
这题看评论区真的绝了,都是人才,各个说话都好听,我看到个还有用异常来结束的就离谱。
这题用了&&当左边为false,右边不执行的原理。
1.3、代码
class Solution {
public int sumNums(int n) {
boolean flag = n > 1 && (n += sumNums(n - 1)) > 0;
return n;
}
}
2.1、题目2
剑指 Offer 68 - I. 二叉搜索树的最近公共祖先
2.2、解法
因为是二叉搜索树,所以当前值大于两个值时,应该往左子树找,
当前值小于两个值时,应该往右子树找。
2.3、代码
class Solution {
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
if(p.val<root.val && q.val < root.val) {
return lowestCommonAncestor(root.left,p,q);
}else if(p.val>root.val && q.val >root.val){
return lowestCommonAncestor(root.right,p,q);
}else{
return root;
}
}
}
3.1、题目3
剑指 Offer 68 - II. 二叉树的最近公共祖先
3.2、解法
开头判断是否是相同或者空的情况,然后设两个结点来遍历两边的字数,如果左边为空,则返回右边,
反之,则返回左边,两者都不满足,则返回root。
3.3、代码
class Solution {
public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {
if(root==null || root.val==p.val || root.val ==q.val) return root;
TreeNode left = lowestCommonAncestor(root.left,p,q);
TreeNode right = lowestCommonAncestor(root.right,p,q);
if(left==null) return right;
if(right==null) return left;
return root;
}
}
剑指offer计划19( 搜索与回溯算法中等)---java的更多相关文章
- 剑指offer 计划1(栈与队列)---java
1.1.题目1 剑指 Offer 09. 用两个栈实现队列 1.2.解法 解法如题目所说.定义两个栈.这里假设第一个栈为a,第二个栈为b. 实现两个函数增加尾和删除头. 增加即直接push入第一个栈. ...
- 剑指offer计划20( 搜索与回溯算法中等)---java
1.1.题目1 剑指 Offer 07. 重建二叉树 1.2.解法 注释解法. 1.3.代码 class Solution { int[] preorder; HashMap<Integer, ...
- 剑指offer计划5(查找算法中等版)---java
1.1.题目1 剑指 Offer 04. 二维数组中的查找 1.2.解法 其实就是暴力解法的升级版,从最后一行开始判断,通过num当前的大小, 如果还是大于目标值则行数-1,若是小于则列数+1 1.3 ...
- 剑指offer计划9(动态规划中等版)---java
1.1.题目1 剑指 Offer 42. 连续子数组的最大和 1.2.解法 得到转移方程后,单次遍历. 当前面的连续子数组的和比较是否大于0,是则加起来, 若小于零,则当前的值就可当子数组的开头. 判 ...
- 剑指offer计划16( 排序简单)---java
1.1.题目1 剑指 Offer 45. 把数组排成最小的数 1.2.解法 这题看的题解,发现自己思路错了. 这里直接拿大佬的题解来讲吧. 一开始这里就把创一个string的数组来存int数组 Str ...
- 剑指offer计划25(模拟中等)---java
1.1.题目1 剑指 Offer 29. 顺时针打印矩阵 1.2.解法 常规开头,先判断特殊情况,然后创建四个变量存放矩阵四边的长度限制. 创建res数组存放结果. 循坏开始,遍历完一行或者一列,就将 ...
- 剑指offer计划27(栈与队列困难)---java
1.1.题目1 剑指 Offer 59 - I. 滑动窗口的最大值 1.2.解法 解题思路:(来自作者bigbeats) 相当于维护一个最大队列(队头元素最大,向队尾非严格递减) 在未形成窗口前,先构 ...
- 剑指offer面试题5 从头到尾打印链表(java)
注:(1)这里体现了java数据结构与C语言的不同之处 (2)栈的操作直接利用stack进行 package com.xsf.SordForOffer; import java.util.Stack; ...
- 剑指offer——27. 二叉搜索树与双向链表(Java版)
题目: 剑指offer的题目有挺多都挺典型的,就像这一道.不过书中的代码写的真是ugly,有很多题目LeetCode上都有,可以去LeetCode讨论区看看,经常有一些大神分享,写的代码真是高效.简洁 ...
随机推荐
- Esxi安装Kali2并开启远程桌面
Kali安装 登录Vmware Esxi页面,选择"创建/注册虚拟机",步骤和创建其它Linux主机类似(Esxi的安装和介绍可以参考上一篇文章) 不同的地方是,客户机操作系统版本 ...
- 01-ADB命令获取包名、界面名
命令代码 adb shell dumpsys window |findstr mFocusedApp
- 痞子衡嵌入式:其实i.MXRT下改造FlexSPI driver同样支持AHB方式去写入NOR Flash
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT下改造FlexSPI driver以AHB方式去写入NOR Flash. 痞子衡前段时间写过一篇 <串行NAND Fl ...
- Mysql生成UUID的SQL语句
大写的UUID: SELECT UPPER(UUID()); 小写的UUID: SELECT LOWER(UUID()); SELECT UUID(); 去掉横杠的UUID: SELECT REPLA ...
- docker 安装部署 jenkins
cd /data/docker-data/jenkins mkdir jenkins_home chmod 777 jenkins_home docker run -d -p 10240:8080 - ...
- Java:学习什么是多线程
线程是什么 进程是对CPU的抽象,而线程更细化了进程的运行流程 先看一下这个图 线程和进程的关系有 进程中就是线程在执行,所有(主)线程执行完了进程也就结束了 多个线程从1秒钟是同时运行完成,从1纳秒 ...
- SpringCloud bootstrap.yml 和application.yml 加载原理
Spring Cloud 官方文档:https://cloud.spring.io/spring-cloud-static/spring-cloud.html 一个Spring Cloud的操作是通过 ...
- C++类的构造函数后面加一个冒号的含义
最近在看侯捷老师讲解的C++知识,他讲到在构造函数加一个冒号初始化值的方法,会使代码更大气,在此记录一下使用方法 构造函数冒号后的初始化class complex{public: complex(do ...
- 【linux】vim常用命令
转自:https://www.runoob.com/linux/linux-vim.html vi/vim 的使用 基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输 ...
- Springboot使用MatrixVariable 注解
根据 URI 规范 RFC 3986 中 URL 的定义,路径片段中可以可以包含键值对.规范中没对对应的术语.一般 "URL 路径参数" 可以被应用,尽管更加独特的 &qu ...