剑指offer
飞柴。
分享自己吃灰的笔记
展开
-
LeetCode 剑指 Offer 13. 机器人的运动范围(广搜和递推,C++)
剑指 Offer 13. 机器人的运动范围题目链接这道题可以简化一下,只剩下从(0,0)开始向下和向右走。二维图扫描可以考虑用广搜或深搜。这里给出广搜以及由广搜的思想引起的另一种方法。C++:class Solution {public: static int get(int x) { int sum = 0; while(x) { sum +=x%10; x = x/10;原创 2020-12-02 20:36:09 · 214 阅读 · 2 评论 -
LeetCode 剑指 Offer 12. 矩阵中的路径(深度优先搜索做二维平面扫描)
题目链接C++:class Solution {public: vector<vector<int>> direc; vector<vector<bool>> visited; vector<vector<char>> board; string word; int n, m, wlen; bool DFS(int i, int j, int start) {原创 2020-12-01 21:08:38 · 201 阅读 · 0 评论 -
LeetCode 剑指 Offer 11. 旋转数组的最小数字(二分法,C++)
题目链接C++:class Solution {public: int minArray(vector<int>& numbers) { int left = 0, right = numbers.size()-1; int mid = 0; while(left < right) { mid = left+(right-left)/2;原创 2020-11-30 23:05:52 · 203 阅读 · 0 评论 -
LeetCode 剑指 Offer 09. 用两个栈实现队列(C++)
剑指 Offer 09. 用两个栈实现队列题目链接a,b两个栈实现队列,a栈负责入队,b栈负责出队,做这道题相当于把两个栈的尾部相连接,为了避免频繁的入栈出栈,等出队的栈为空时,再把a栈中的数据倒进b。具体实现如下:class CQueue {public: stack<int> s1, s2; CQueue() { while (!s1.empty()) { s1.pop(); } while原创 2020-11-29 17:44:28 · 252 阅读 · 0 评论 -
LeetCode 剑指 Offer 07. 重建二叉树(不递归不知道C++传vector多么浪费时间)
剑指 Offer 07. 重建二叉树题目链接前序遍历:根节点->左子树->右子树中序遍历:左子树->根节点->右子树前序遍历的第一个节点是根节点,然后根据根节点在中序遍历数组中的位置,该位置左边是左子树的节点数量,该位置右边是右子树的节点数量。C++:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * Tr原创 2020-11-28 23:34:47 · 292 阅读 · 1 评论 -
LeetCode 剑指 Offer 04. 二维数组中的查找(二叉搜索树,C++和python)
剑指 Offer 04. 二维数组中的查找题目链接从右上角观察数组,发现数组和二叉搜索树类似。因此可以这么做,右上角的值和target比较,如果大于target,行加1,如果小于target,列减1。C++:class Solution {public: bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) { int width = matrix.size();原创 2020-11-26 22:13:52 · 236 阅读 · 0 评论 -
LeetCode 剑指 Offer 24. 反转链表(两种写法)
剑指 Offer 24. 反转链表题目链接方法一:翻转当前节点的后一个节点指向/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* reverseList(Lis原创 2020-11-22 20:02:39 · 993 阅读 · 8 评论 -
LeetCode 剑指 Offer 03. 数组中重复的数字(使value == index,python版本)
剑指 Offer 03. 数组中重复的数字题目链接这道题看到重复两个字一半想到用哈希,等等,0~n-1?那如果不存在重复元素的且有序的话则index==value,因此可以交换value和index,让其归位(value == index),如果拿到一个value(这个值的index不等于value),发现value下标对应的位置已经归位,则这个value重复。如下动图所示:*注:博主用ppt制作python代码如下:class Solution: def findRepeatNum原创 2020-11-21 22:25:36 · 199 阅读 · 0 评论 -
LeetCode 剑指 Offer 06. 从尾到头打印链表(递归和栈,C++和python)
剑指 Offer 06. 从尾到头打印链表题目链接这道题看到逆序打印,可以很快想到用递归,递归使用系统内存中的栈,不断调用函数速度有点慢,自己用栈保存是更快的。python版本:# Definition for singly-linked list.# class ListNode:# def __init__(self, x):# self.val = x# self.next = Noneclass Solution: def rec原创 2020-11-21 19:40:46 · 209 阅读 · 0 评论