-
链表-找出该链表的环的入口结点(思路和代码实现)
对于链表你了解多少呢?下面要给大家带来的是关于找出该链表的环的入口结点的思路和代码实现。题目:一个链表,假如,其中包括了环,那么,请找出这个链表的环的入口结点,否则,输出null。思路1:首先,找到环中的相汇点。分别用p1,p2指向链表头部,p1每走一步,p2每走二步,直到p1==p2找到在环中的相汇点。接着,要找到环的入口。接着上面一步,在p1==p2的时候,p2所经过节点数为2x,p1所经过节点数为x,设环中有n个节点,p2比p1多走一圈有2x=n+x; n=x;能够看出p1实际走了一个
-
链表-删除链表中重复的结点(思路和代码实现)
大家对于链表都熟悉吗?下面要给大家分享的是删除链表中重复的结点的思路和代码实现,一起来具体的了解一下吧。题目:在一个排序的链表当中,存在着重复的结点,请删除掉这个链表中重复的结点,重复的结点不保留,返回链表头指针。例:链表1->2->3->3->4->4->5 处理后为 1->2->5思路1:非递归的代码:一、 首先要添加一个头节点,方便碰到第一个,第二个节点就相同的情况。二、设置pre,last指针, pre指针指向现在确定不重复的那个节点,而l
-
回溯法-机器人的运动范围(代码实现和思路)
下面要给大家分享的是回溯法-机器人的运动范围的代码实现和思路,具体介绍了3种代码实现方式思路。题目:地面上有一个m行和n列的方格,机器人从坐标0,0的格子开始进行一栋,每次,只能向左,右,上,下四个方向移动一格,可是不能够进入行坐标和列坐标的数位之和大于k的格子。例:在k是18时,机器人可以进入方格(35,37),因为3+5+3+7=18。可是,机器人不能够进入方格(35,38),因为3+5+3+8=19。问:机器人可以达到多少个格子?思路1代码实现:class Solution {
-
动态规划与贪婪算法剪绳子(实现与思路)
下面给大家分享的是动态规划与贪婪算法剪绳子的代码实现与思路,感兴趣的朋友可以一起来了解一下,一共有3种代码实现思路哦。题目:给你一条长度是n的绳子,将绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记做k[0],k[1],...,k[m]。问:k[0]xk[1]x...xk[m]可能的最大乘积是多少?例:在绳子长度是8的时候,我们将它剪成长度分别是2、3、3的三段,这个时候所能够得到的最大乘积是18。思路1:代码实现:public class&nbs
-
找出二叉树的下一个节点(代码实现和思路)
下面给大家分享的是找二叉树的下一个节点的代码实现和思路,感兴趣的朋友可以进来了解一下,具体包含了3种思路代码实现方式。题目:指定一个二叉树和其中的一个结点,找出中序遍历顺序的下一个结点并返回。注:树中的结点不仅仅包括了左右子结点,还包括了指向父结点的指针。思路1:首先我们要了解中序遍历的规则:左根右,之后作图。结合上面的图,大致可以分成2类:1、有右子树的,则下一个结点就是右子树最左边的点;(eg:D,B,E,A,C,G)2、没有右子树的,大致也可以分成2类a)是父节点左孩子(eg:N,I,L)
-
判断二叉树是不是对称的,实现和思路分享
二叉树我们应该都很熟悉,那么通常来说,怎样才能判断二叉树是否对称呢?下面一起来了解一下具体的代码实现和思路。题目:实现一个函数,判断一颗二叉树是否对称。注:假如,一个二叉树同此二叉树的镜像是相同的,则定义为对称。思路1:递归做代码实现:class Solution { public: bool isSame(TreeNode&n
-
按之字形顺序打印二叉树如何实现?代码实现和思路分享
大家对于二叉树应该都很了解,那么按照之字形顺序打印二叉树应该怎样实现呢?下面一起来看看相关的代码实现和思路分享吧。题目:实现一个函数按照之字形打印二叉树。也就是第1行依照从左至右的顺序打印,第2行依照从右到左的顺序打印,第3行依照从左至右的顺序打印,其它的行皆以此类推。思路1:代码实现:public static ArrayList < ArrayList < Integer >> Print
-
从上到下打印二叉树,将二叉树打印成多行代码实现和思路
你知道从上往下打印二叉树的实现方法吗?很多人都不大了解,下面就一起来看一下,从上到下打印二叉树的实现和思路吧。题目:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。思路1:(最简洁的答案)代码实现://用递归做的 public class Solution { ArrayList < ArrayList < Integer > &
-
如何得到一个数据流中的中位数,代码实现和思路分享
今天要给大家分享的是关于数据流中的中位数的相关内容,那么你知道怎样才能够得到一个数据流中的中位数吗?用代码如何实现呢?具体的思路又是怎样的?怎样才能得到一个数据流中的中位数?假如,从数据流中读出奇数个数值,则中位数就是所有数值排序之后位于中间的数值。假如,从数据流中读出偶数个数值,则中位数就是所有数值排序之后中间两个数的平均值。用Insert()方法读取数据流,用GetMedian()方法获取当前读取数据的中位数。思路1:构建一棵平衡二叉搜索树 。每一个结点左子树都是小于等于其value的值,右
-
二叉树的序列化与反序列化(代码实现和思路)
今天要给大家分享的是关于二叉树的序列化与反序列化问题。请实现两个函数,分别用来序列化和反序列化二叉树,包含了具体的代码实现和思路。二叉树的序列化:将一棵二叉树根据某一种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树能够长久保存。序列化能够基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过某种符号表示空节点(#),以 ! 代表着一个结点值的结束(value!)。二叉树的反序列化:依据某种遍历顺序得到的序列化字符串结果str,重构二