Java 位移运算符 Java 位移运算符 2021-03-03 java 剑指 Offer 15. 二进制中1的个数 剑指 Offer 15. 二进制中1的个数 解题思路 代码 解题思路第一种常规解法:不断右移n。 public class Solution { public int hammingWeight(int n) { 2021-03-03 力扣 剑指 Offer 14- II. 剪绳子 II 剑指 Offer 14- II. 剪绳子 II 解题思路 代码 解题思路和剪绳子Ⅰ 思路一样,多了个取模运算而已。 代码class Solution { public int cuttingRope(int n) { 2021-03-03 力扣 剑指 Offer 14- I. 剪绳子 剑指 Offer 14- I. 剪绳子 解题思路 代码 解题思路本题可以使用动态规划和贪心算法,但是由于贪心算法比动态规划要快!所以我们选择贪心算法。 其实这个题目有数学的规律,也即是把绳子切分成长度为3的小段,并且切分成的段越多,乘 2021-03-03 力扣 剑指 Offer 13. 机器人的运动范围 剑指 Offer 13. 机器人的运动范围 解题思路 代码 解题思路本题是是典型的搜索问题,可以用DFS来解决。这题右两个 前置知识需要理解。 数位之和计算:可通过循环求得数位和 s ,数位和计算的封装函数如下所示 int sum 2021-03-03 力扣 剑指 Offer 12. 矩阵中的路径 剑指 Offer 12. 矩阵中的路径 解题思路 代码 解题思路本问题是典型的矩阵搜索问题,可使用 深度优先搜索(DFS)+ 剪枝 解决。 代码class Solution { public boolean exist(ch 2021-03-03 力扣 剑指 Offer 11. 旋转数组的最小数字 剑指 Offer 11. 旋转数组的最小数字 解题思路 代码 解题思路排序数组的查找问题首先考虑使用 二分法 解决。 流程: 初始化: 声明了l;,r双指针分别指向 nums 数组左右两端; 循环二分: 设 mid 为每次二分的中点 2021-03-03 力扣 剑指 Offer 10- II. 青蛙跳台阶问题 剑指 Offer 10- II. 青蛙跳台阶问题 解题思路 代码 解题思路和Leetcode70题一样。也是用动态规划求解,但是要注意这个0个台阶也有一种跳法,然后就是结果要%1000000007。 代码class Solution 2021-03-02 力扣 剑指 Offer 10- I. 斐波那契数列 剑指 Offer 10- I. 斐波那契数列 解题思路 代码 解题思路动态规划思路,主要知道dp[i]的值代表 斐波那契数列第 i 个数字 。 代码class Solution { /* 0、1、1、2、3、5、8、13、21 2021-03-02 力扣 剑指 Offer 09. 用两个栈实现队列 剑指 Offer 09. 用两个栈实现队列 解题思路 代码 解题思路 题目只要求实现 加入队尾appendTail() 和 删除队首deleteHead() 两个函数的正常工作,因此我们可以设计栈 A 用于加入队尾操作,栈 B 用于将 2021-03-02 力扣 剑指 Offer 07. 重建二叉树 剑指 Offer 07. 重建二叉树 解题思路 代码 解题思路通过以上三步,可确定 三个节点 :1.树的根节点、2.左子树根节点、3.右子树根节点。对于树的左、右子树,仍可使用以上步骤划分子树的左右子树。 以上子树的递推性质是 分治算 2021-03-02 力扣 剑指 Offer 06. 从尾到头打印链表 剑指 Offer 06. 从尾到头打印链表 解题思路 代码 解题思路链表特点: 只能从前至后访问每个节点。题目要求: 倒序输出节点值。这种 先入后出 的需求可以借助 栈 来实现。 算法流程: 入栈: 遍历链表,将各节点值 push 2021-03-02 力扣