因为时间紧和基础薄弱,一刷《剑指Offer》就变成了速看。

我按照:

1、看题目思考一会;

2、上网找找关于题目里不懂的知识点;

3、看评论和官方题解的解法,尽量看懂,并及时弄懂不懂的地方;

4、将搜索到的资料和感觉优秀的解法记录在这个博客里。

这四步来完成一刷,之后再仔细二刷。

T07、深入学习二叉树(一) 二叉树基础:https://www.jianshu.com/p/bf73c8d50dc2

  二叉树前序遍历和中序遍历的特点(前序遍历的顺序:根左右 ;中序遍历的顺序:左根右):首先利用前序遍历找到根节点,之后利用前序遍历数组找到的根节点找到对应中序遍历数组根节点的下标,

  Arrays.copyOfRange(T[ ] original,int from,int to)将一个原始的数组original,从下标from开始复制,复制到上标to,生成一个新的数组。

  注意这里包括下标from,不包括上标to。

T08、Stack的基本使用:初始化Stack stack=new Stack、判断是否为空stack.empty()、取栈顶值(不出栈)stack.peek()、进栈stack.push(Object)、出栈 stack.pop();search()返回对象在堆栈中的位置;

队列方法: add增加一个元索; remove移除并返回队列头部的元素    ;element返回队列头部的元素 offer添加一个元素并返回true   poll移除并返问队列头部的元素   peek返回队列头部的元素        put添加一个元素

take 移除并返回队列头部的元素

队列(Queue):是限定只能在表的一端进行插入和在另一端进行删除操作的线性表。栈(Stack):是限定只能在表的一端进行插入和删除操作的线性表。

一、规则不同:1. 队列:先进先出(First In First Out)FIFO          2. 栈:先进后出(First In Last Out )FILO

二、对插入和删除操作的限定不同1. 队列:只能在表的一端进行插入,并在表的另一端进行删除。2. 栈:只能在表的一端插入和删除。

三、遍历数据速度不同:

1. 队列:基于地址指针进行遍历,而且可以从头部或者尾部进行遍历,但不能同时遍历,无需开辟空间,因为在遍历的过程中不影响数据结构,所以遍历速度要快。

2. 栈:只能从顶部取数据,也就是说最先进入栈底的,需要遍历整个栈才能取出来,而且在遍历数据的同时需要为数据开辟临时空间,保持数据在遍历前的一致性。

可以使用LinkedList来做Stack的容器,因为LinkedList实现了Deque接口,所以Stack能做的事LinkedList都能做,其本身结构是个双向链表,扩容消耗少。

T11、排序数组的查找问题首先考虑使用 二分法 解决,其可将遍历法的 线性级别 时间复杂度降低至 对数级别 。

二分法的实现需要 两个下标变量(start和end)来控制查询数组的范围,默认是从0到数组的最后一个元素,然后需要获取数组的中间元素(下标为(start+end)/2的元素)与要查找的值作比较,如果这个元素大于查找的值,说明 要查找的值在数组下标0到(start+end)/2 之间,否则在下标(start+end)/2到数组最后一个元素之间。     所以 每次比较之前都是将查询的范围缩短一半,然后控制这个查询的范围依据就是根据上一次数组中间的元素与查找的值比较之后 数组的元素的下标来重新分配的,以便提高效率。

请问 mid = (left + right) /2 和 mid = left + (right - left) / 2 结果是不是一样的啊?答:结果一样,后面一种写法可以防止溢出

T12、String的两个方法:charAt(int index) 返回指定索引处的 char 值。toCharArray()  将此字符串转换为一个新的字符数组

深度优先算法(DFS)https://www.jianshu.com/p/bff70b786bb6

剪枝算法:https://blog.csdn.net/qq_41668547/article/details/88087187

T13、深度优先算法和广度优先算法

T14、

T15、

(n−1) 解析: 二进制数字 n 最右边的 1 变成 0 ,此 1 右边的 0 都变成 1 。
n&(n−1)解析: 二进制数字 n最右边的 1 变成 0,其余不变。
 

T16、

T19、

动态规划:https://www.cnblogs.com/CodingAndRiding/p/7619759.html

关键点截图:如果我们有面值为1元、3元和5元的硬币若干枚,如何用最少的硬币凑够11元?

 

  

刷一遍《剑指Offer》,你还需要这些知识!(一刷)的更多相关文章

  1. 二维数组的查找,刷题成功——剑指Offer

    今天又做了一道题目,通过啦,欧耶! https://www.nowcoder.net/practice/abc3fe2ce8e146608e868a70efebf62e?tpId=13&tqI ...

  2. Leetcode刷题记录 剑指offer

    面试题3:数组中重复数字 # 使用set,时间复杂度O(n),空间复杂度O(n)class Solution(object): def findRepeatNumber(self, nums): &q ...

  3. #刷题记录--剑指 Offer 07. 重建二叉树

    输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字. 抓住一点,通过递归进行节点创建时,是按照 前序遍历数组 进行创建的. 根节点,根节点的左 ...

  4. 剑指offer得意之作——顺时针打印矩阵

    题目: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3 ...

  5. 高强度学习训练第九天总结:5道剑指offer的题目

    实在不想看JVM了.刷几道剑指Offer的题,今天就水一水吧,脑子迷糊. 1.二维数组中的查找 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增 ...

  6. 剑指offer二刷(精刷)

    剑指 Offer 03. 数组中重复的数字 题目描述 在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次. ...

  7. 剑指offer刷题

    1.面试题43. 1-n整数中1出现的次数 输入一个整数 n ,求1-n这n个整数的十进制表示中1出现的次数. 例如,输入12,1-12这些整数中包含1 的数字有1.10.11和12,1一共出现了5次 ...

  8. 刷《剑指offer》笔记

    本文是刷<剑指offer>代码中的学习笔记,学习ing.. 衡量时间和空间. 递归的代码较为简洁,但性能不如基于循环的实现方法.

  9. 牛客网剑指offer刷题总结

    二维数组中的查找: 题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 两 ...

随机推荐

  1. PAT-1058 A+B in Hogwarts (进制转换)

    1058. A+B in Hogwarts If you are a fan of Harry Potter, you would know the world of magic has its ow ...

  2. Spring MVC必须知道的执行流程

    Spring MVC的执行流程 一.名词解释 1.前端控制器(DispatcherServlet) 接收请求,响应结果,相当于转发器,中央处理器 2.处理器映射器(HandlerMapping) 根据 ...

  3. 还不会K8S吗?先从kubeadm开始吧

    目录 1. 准备工作 1.1 机器准备 1.2 系统配置 1.2.1 主机名及域名解析 1.2.2 免密登录 1.2.3 配置yum源 1.2.4 安装必要依赖包 1.2.5 关闭防火墙.SELinu ...

  4. python中几个双下划线用法的含义

    _ _ init() _ _(self[,...]) 我们有时在类定义写__init()__方法,但是有时又没有.__init()__方法相当于其他面向对象的编程语言中的构造方法,也就是类在实例化成对 ...

  5. SpringBoot—自定义线程池及并发定时任务模板

    介绍   在项目开发中,经常遇到定时任务,今天通过自定义多线程池总结一下SpringBoot默认实现的定时任务机制. 定时任务模板 pom依赖 <dependencies> <dep ...

  6. Rocket - debug - Example: Quick Access

    https://mp.weixin.qq.com/s/SxmX-CY2tqvEqZuAg-EXiQ 介绍riscv-debug的使用实例:配置Quick Access功能. 1. Quick Acce ...

  7. Rocket - tilelink - AtomicAutomata之二

    https://mp.weixin.qq.com/s/XDUtw0uPrVXC4CChbydF_A   分析在透传和代理两种模式下,AtomicAutomata可能出现的问题.   ​​   1. 透 ...

  8. jchdl - GSL Port

    https://mp.weixin.qq.com/s/DVmMrCFgNLuZDtssQ85w7A   org.jchdl.model.gsl.core.meta.Port.java   ​​ gen ...

  9. Rocket - spec - RISC-V规范整理

    https://mp.weixin.qq.com/s/xP8JRhkmgUQf0QRm3S2mjA   根据RISC-V规范整理的几个文档.   ​​     1. 原文链接 https://risc ...

  10. 分享按钮(QQ,微信,微博等)移入动画效果

    ps:最近写的很多博客都是在以前在项目里写过的,之所以现在写出来,最大的目的就是希望自己以后用到的时候比较容易找,而且现在再写一遍,有助于加深印象! 很简单的效果,说先实现方式: 1.图标来自 阿里巴 ...