fFee-ops's Blog
剑指 Offer 12. 矩阵中的路径 剑指 Offer 12. 矩阵中的路径
剑指 Offer 12. 矩阵中的路径 解题思路 代码 解题思路本问题是典型的矩阵搜索问题,可使用 深度优先搜索(DFS)+ 剪枝 解决。 代码class Solution { public boolean exist(ch
2021-03-03
剑指 Offer 11. 旋转数组的最小数字 剑指 Offer 11. 旋转数组的最小数字
剑指 Offer 11. 旋转数组的最小数字 解题思路 代码 解题思路排序数组的查找问题首先考虑使用 二分法 解决。 流程: 初始化: 声明了l;,r双指针分别指向 nums 数组左右两端; 循环二分: 设 mid 为每次二分的中点
2021-03-03
剑指 Offer 10- II. 青蛙跳台阶问题 剑指 Offer 10- II. 青蛙跳台阶问题
剑指 Offer 10- II. 青蛙跳台阶问题 解题思路 代码 解题思路和Leetcode70题一样。也是用动态规划求解,但是要注意这个0个台阶也有一种跳法,然后就是结果要%1000000007。 代码class Solution
2021-03-02
剑指 Offer 10- I. 斐波那契数列 剑指 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. 用两个栈实现队列
剑指 Offer 09. 用两个栈实现队列 解题思路 代码 解题思路 题目只要求实现 加入队尾appendTail() 和 删除队首deleteHead() 两个函数的正常工作,因此我们可以设计栈 A 用于加入队尾操作,栈 B 用于将
2021-03-02
剑指 Offer 07. 重建二叉树 剑指 Offer 07. 重建二叉树
剑指 Offer 07. 重建二叉树 解题思路 代码 解题思路通过以上三步,可确定 三个节点 :1.树的根节点、2.左子树根节点、3.右子树根节点。对于树的左、右子树,仍可使用以上步骤划分子树的左右子树。 以上子树的递推性质是 分治算
2021-03-02
剑指 Offer 06. 从尾到头打印链表 剑指 Offer 06. 从尾到头打印链表
剑指 Offer 06. 从尾到头打印链表 解题思路 代码 解题思路链表特点: 只能从前至后访问每个节点。题目要求: 倒序输出节点值。这种 先入后出 的需求可以借助 栈 来实现。 算法流程: 入栈: 遍历链表,将各节点值 push
2021-03-02
剑指 Offer 05. 替换空格 剑指 Offer 05. 替换空格
剑指 Offer 05. 替换空格 解题思路 代码 解题思路这个很简单,用个stringbuilder即可解决 代码class Solution { public String replaceSpace(String s) {
2021-03-02
剑指 Offer 04. 二维数组中的查找 剑指 Offer 04. 二维数组中的查找
剑指 Offer 04. 二维数组中的查找 解题思路 代码 解题思路若使用暴力法遍历矩阵 matrix ,则时间复杂度为 O(NM)O(NM) 。暴力法未利用矩阵 “从上到下递增、从左到右递增” 的特点,显然不是最优解法。 我们可以发
2021-03-02
剑指 Offer 03. 数组中重复的数字 剑指 Offer 03. 数组中重复的数字
剑指 Offer 03. 数组中重复的数字 解题思路 代码 解题思路首先想到暴力解法,但是时间复杂度太高了,所以想到用map来优化,还是遍历数组,把遇到的元素的对应的次数存入map,只要次数>=2就证明出现了重复元素,直接返回即
2021-03-02
877. 石子游戏(高频题) 877. 石子游戏(高频题)
877. 石子游戏 题目 解题思路 代码 题目亚历克斯和李用几堆石子在做游戏。偶数堆石子排成一行,每堆都有正整数颗石子 piles[i] 。 游戏以谁手中的石子最多来决出胜负。石子的总数是奇数,所以没有平局。 亚历克斯和李轮流进行,亚
2021-03-01
292. Nim 游戏(高频题) 292. Nim 游戏(高频题)
292. Nim 游戏 题目 解题思路 代码 题目你和你的朋友,两个人一起玩 Nim 游戏: 桌子上有一堆石头。你们轮流进行自己的回合,你作为先手。每一回合,轮到的人拿掉 1 - 3 块石头。拿掉最后一块石头的人就是获胜者。假设你们每
2021-03-01
10 / 21