因为时间紧和基础薄弱,一刷《剑指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) /2mid = 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. Java并发:线程安全分析

    java中的线程安全是什么: 就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问 什么叫 ...

  2. Socket - TCP编程

    Socket是网络编程的一个抽象概念. 通常我们用一个Socket表示“打开了一个网络链接”,而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定协议类型即可 socket参数及常用功能 ...

  3. LOL源代码娜美皮肤免费领取

    领取地址 http://t.cn/EyOY8zp 截图

  4. JUC整理笔记二之聊聊volatile

    要想学好JUC,还得先了解 volatile 这个关键字.了解 volatile ,我们从一个例子开始吧. 本文不会很详细去说java内存模型,只是很简单地学习一下volatile 一个例子 pack ...

  5. MySQL的CHAR 和 VARCHAR的区别

    CHAR 和 VARCHAR 类型,CHAR 列的长度固定, VARCHAR 列中的值为可变长字符串.在检索的时候,CHAR 列删除了尾部的空格,而 VARCHAR 则保留这些空格s

  6. 谁说双非本科就一定无缘阿里?H哥粉丝6面通过,喜提Offer!

    本文来自作者投稿(原作者:小胖儿),原作者是一位2021届本科毕业生,就读于一所双非(非985.非211)院校,在今年2月份的时候,我曾经帮他指导过简历,并且根据他的简历内容帮他提了一些可能会问到的问 ...

  7. PIC16F887的LCD

    RS RA5 RW RA4 RD RA3 将引脚设置为输出的时候要对ANS5 ANS4 ANS3 设置为0

  8. eatwhatApp开发实战(十)

    android应用中,很少有一个activity的app,这次我们设置一个activity,通过listview的点击跳转并显示对应的商店信息. 首先创建类ShopInfoActivity,对应设置其 ...

  9. [PHP学习教程 - 网络]002.$_SERVER["SCRIPT_NAME"]、$_SERVER["PHP_SELF"]、$_SERVER["QUERY_STRING"]、$_SERVER["REQUEST_URI"]介绍($_SERVER URL Infomation)

    引言:在使用原生PHP的时候,对于URL路径的切割,如:域名,查询参数等等的提取,通常绝大多数兄弟会忽略$_SERVER中定义的内置常量的关系,这里为大家讲解一下. 常用的URL请求路径$_SERVE ...

  10. webstorm 单词快捷翻译设置

    1.打开webstorm中的设置,选择plugins,搜索 translations 安装,安装完成重启webstorm 2.设置快捷键翻译,打开webstorm设置,选择keymap,搜索trans ...