
算法
Bqv它不想做功
这个作者很懒,什么都没留下…
展开
-
锻练编程思维——每日一题:《剑指offer》二叉树的下一个结点
题目描述题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。题目所给代码框架:/*struct TreeLinkNode { int val; struct TreeLinkNode *left; struct TreeLinkNode *right; struct TreeLinkNode *next; TreeLinkNode(int x) :val(x), lef原创 2020-06-10 20:22:34 · 132 阅读 · 0 评论 -
锻练编程思维——每日一题:《剑指offer》二叉树的深度
题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。题目所给代码/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: int TreeDe原创 2020-06-08 18:25:33 · 143 阅读 · 0 评论 -
锻练编程思维——每日一题:《剑指offer》求1+2+3+。。。+n
目录题目描述题目分析题解代码题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。题目所给代码:class Solution {public: int Sum_Solution(int n) { }};题目分析在计算机里,求1+2+3+…+n得求1+2+3+…+n-1,求1+2+3+…+n-1得求1+2+3+…+n-2,求1+2+3+…+n-2得求1+2+3+原创 2020-06-06 18:11:52 · 186 阅读 · 0 评论 -
锻练编程思维——每日一题:《剑指offer》删除链表中重复的结点
题目描述题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5题目所给代码框架:/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/c原创 2020-06-04 15:36:05 · 148 阅读 · 0 评论 -
锻练编程思维——每日一题:《剑指offer》二叉树的镜像
题目描述题目描述操作给定的二叉树,将其变换为源二叉树的镜像。题目给的代码框架:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution {public: void Mirror(TreeNode *pRoot) { }}原创 2020-06-03 09:22:15 · 150 阅读 · 0 评论 -
锻练编程思维——每日一题:《剑指offer》斐波那契数列
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n<=39题目给出的代码框架:class Solution {public: int Fibonacci(int n) { }};题目分析不可用递归算法,时间复杂度O(2的n次方)非常大,不会通过的非递归算法(循环算法最简单),思路如下斐波那契数列求值采用自底向上(循环)的方式,已知前两项的值(a做+的右侧值,b做+的左侧值,继而1+1=原创 2020-06-02 15:48:30 · 228 阅读 · 0 评论 -
锻练编程思维——每日一题:《剑指offer》链表中环的入口结点
题目描述题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。题目给出的代码框架/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* EntryNodeOfLoop(ListNode* pHead)原创 2020-06-01 20:26:00 · 186 阅读 · 0 评论 -
锻练编程思维——每日一题:《剑指offer》字符流中第一个不重复的字符
题目描述题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。输出描述:如果当前字符流没有存在出现一次的字符,返回#字符。题目给出的代码框架:class Solution{public: //Insert one char from stringstream void Insert(char ch) {原创 2020-05-31 13:48:15 · 295 阅读 · 0 评论 -
锻练编程思维——每日一题:《剑指offer》表示数值的字符串
昨天光tm做实验了,写了一堆实验报告,今天上午也是。所以昨天没写oj题。没写就没写吧(那我不能穿越回昨天233),今天得写了,还是尽量一天一道,循序渐进目录题目描述题目分析题解代码小结题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。题目给的代码框架:class Solution {publi原创 2020-05-30 15:22:20 · 451 阅读 · 0 评论 -
锻练编程思维——每日一题:《剑指offer》数组中重复的数字
题目描述题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。很经典的一道题,但是想出一个很好的题解却很难。...原创 2020-05-28 17:31:38 · 257 阅读 · 0 评论 -
锻练编程思维——每日一题:《剑指offer》构建乘积数组
目录审题思路拆解:审题题目描述给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n-2];)提炼信息:①给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1]②B中的元素B[i]=A[0]*A[原创 2020-05-25 16:41:48 · 274 阅读 · 0 评论 -
数据结构——KMP算法(难懂版,但还是看看吧)
据说这个算法很难,起初看了《大话数据结构》,知道了这个算法,但是没看懂没理解,然后看其他博客,尽管博客上写着易懂,好理解,但我仍然看不懂,不理解,心里一直在口吐芬芳。后来我看了几个版本的KMP算法讲解,终于有所明目,所以来给大家写一个易懂版 难懂版的,直接硬刚。因为是硬刚,所以字数难免长,我也没有动图,因为一开始就看动图我必看不懂动图,我相信有的人也是这样。但是我会尽量以唠嗑的形式跟大家讲讲我...原创 2020-05-06 23:35:49 · 1511 阅读 · 1 评论 -
锻练编程思维——每日一题:《剑指offer》从尾到头打印链表
嗯,第一次上oj做算法题。第一眼就看到了从头到尾打印链表。然后苦思冥想,毕竟是C++实现,而非C实现,我看了一个题解,居然要用到STL相关的知识。好吧,我要自己讲清楚思路和代码class Solution {public: vector<int> printListFromTailToHead(ListNode* head) { vector<i...原创 2020-05-03 17:44:02 · 174 阅读 · 0 评论