因为时间紧和基础薄弱,一刷《剑指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. UVA11038

    题目大意:见刘汝佳<算法竞赛入门经典——训练指南>P173 解题思路: 求出 0 到 m-1 这些数字中 0 出现的次数(此处要特判 m = 0 的情况),再求出 0 到 n 这些数字中 ...

  2. python-基站位置查询

    本文采用的接口是聚合数据提供的 python2.7环境,3.x环境试了下好像不支持,获取位置信息为空 如下为运用代码: #coding=utf-8 ''' Created on 2019年9月18日 ...

  3. [推荐]大量 Blazor 学习资源(一)

    前言 / Introduction Blazor 是什么? Blazor 允许您使用 C# 而不是 JavaScript 构建交互式 Web UI. Blazor 应用由使用 C#.HTML 和 CS ...

  4. poi 针对word模板内容替换

    最近多了一个需求,需要对word模板内容进行替换,一开始用的是word03版的,替换起来比较简单,主要是range对像替换非常方便,而且可以保留替换前的字体样式. InputStream is = n ...

  5. swiper基本使用

    参数名 类型 是否必填 描述 swiperContainer HTMLElement or string 必选 Swiper容器的css选择器,例如".swiper-container&qu ...

  6. Python 为什么不用分号作终止符?

    一般而言,编程语言中使用分号";"来实现两种目的: 作为语句分隔符:使用分号来分隔语句(statement),这样就能在一行代码中书写多条语句(一行多句) 作为语句终止符:使用分号 ...

  7. Parrot os更新内核及/boot空间清理

    升级时发现boot,空间满了,卸载以前的内核,清理空间. 如何升级内核请查看我上篇博客:https://www.cnblogs.com/junsec/p/11453049.html 卸载多余内核,清理 ...

  8. Spring boot Sample 0010之spring-boot-web-freemarker

    一.环境 1.1.Idea 2020.1 1.2.JDK 1.8 二.目的 spring boot 整合freemarker模板开发web项目 三.步骤 3.1.点击File -> New Pr ...

  9. jchdl - GSL实例:HalfAdder

    https://mp.weixin.qq.com/s/Y97bIro7UlPPFCoPlzgmOQ 半加器电路是指对两个输入相加,输出一个结果位和,没有进位输入的电路. 是实现两个一位二进制数的加法运 ...

  10. (Java实现) 活动选择

    活动选择的类似问题都可以这么写 import java.util.ArrayList; public class huodongxuanze { /** * //算法导论中活动选择问题动态规划求解 * ...