牛客刷题
牛客网题目复习
陈汉升
这个作者很懒,什么都没留下…
展开
-
判断链表中是否有环并返回环的入口结点 c++实现
一、判断一个链表中是否有环,如果有环,返回环的最初节点。例如:输入:输出:2实现思想是先定义一个特定节点值的节点,依次断开节点与下一节点的连接,并将下一节点的指针指向该特定节点,如果存在环则必定会访问到这个特定的节点,否则指针为·NULL则遍历结束,不存在环。具体代码如下: ListNode *detectCycle(ListNode *head) { if(head==NULL) return head; ListNode* l原创 2020-09-02 19:44:30 · 386 阅读 · 1 评论 -
动态规划 三角形最小路径和 c++实现
给出一个三角形,计算从三角形顶部到底部的最小路径和,每一步都可以移动到下面一行相邻的数字。例如,给出的三角形如下:最小的从顶部到底部的路径和是2 + 3 + 5 + 1 = 11。题解:碰到求最优解的问题时要记起动态规划。由上图可知以1为例子,若1为最后终点,则1的路径和应该为上面两个数中较小的路径和再加上本身的值,若不在中间而在头尾两端,则所对应的路径和应该为上面元素路径和加上本身。最后遍历最后一行的路径和值,求出最小的即为最小路径和。class Solution {public: i原创 2020-08-26 16:00:24 · 504 阅读 · 0 评论 -
二叉树的遍历 非递归实现 栈 c++
一、对于一棵二叉树的而言,最普遍的操作就是进行遍历,遍历又分先序遍历,中序遍历,后序遍历,层序遍历。本次博客主要是针对前面三种遍历方式,一般的方法就是采用递归,即逐个根节点进行递归操作,那么如何采用非递归进行遍历呢,这里就需要借助于栈这种数据结构。二、下面以具体的题目及代码进行讲解(题目是leetcode在线编程)1.2.3....原创 2020-08-22 19:28:22 · 359 阅读 · 0 评论 -
层序遍历 queue和deque区别 c++实现
一、二叉树的层序遍历,主要有两个关键要素,一是队列,实现工具,二是递归,实现算法。对于一个二叉树,层序遍历的思想就是把根结点传进队列,然后进入while循环直到队列为空为止,然后每一次取出队列的队首元素,输出键值,然后依次判断是否存在左右子树,如果存在把左右子树进行入列。循环结束,则可输出层序遍历。而队列主要有两种,一是queue,而是deque。二、这里先看两道例题。1.给定一个二叉树,返回该二叉树层序遍历的结果,(从左到右,一层一层地遍历)例如:给定的二叉树是{3,9,20,#,#,15,7}原创 2020-08-21 22:27:21 · 778 阅读 · 2 评论