05 2020 档案
摘要:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。 设置快慢指针,都从链表头出发,快指针每次走两步,慢指针一次走一步,假如有环,一定相遇于环中某点。接着让两个指针分别从相遇点和链表头出发,两者都改为每次走一步,最终相遇于环入口。 证明: 快指针路程=a+(b+c)k+b ,k
阅读全文
摘要:输入一个链表,输出该链表中倒数第k个结点。 设链表的长度为 N。设置两个指针 P1 和 P2,先让 P1 移动 K -1个节点,则还有 N - K 个节点可以移动。此时让 P1 和 P2 同时移动,可以知道当 P1 移动到链表结尾时,P2 移动到第 N - K-1 个节点处,该位置就是倒数第 K 个
阅读全文
摘要:请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配 当
阅读全文
摘要:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5 递归 public class Solution { public ListNode deleteDuplication(Li
阅读全文
摘要:给你一根长度为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。 法
阅读全文
摘要:地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8
阅读全文
摘要:用递归实现回溯法 注意:对于越界的检查是row>=matrix.length和col>=matrix[0].length要加上等号(这个错误找了半个小时呜呜呜) public class Solution { private int[][] act = {{0,1},{0,-1},{-1,0},{1
阅读全文
摘要:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 考察二分法: import
阅读全文
摘要:输入一个链表,按链表从尾到头的顺序返回一个ArrayList。 方法一:递归 import java.util.ArrayList; public class Solution { ArrayList<Integer> ret = new ArrayList<Integer>(); public A
阅读全文
摘要:请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 public class Solution { public String replaceSpace(StringBuffer str) {
阅读全文
摘要:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 这道题要注意对二维数组为空的判断,不能用if(array==null)因为有[[]],应该用数组长度判断:
阅读全文
摘要:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。、 之前做过一道题是二叉树中和为某个值的路径,如果这道题要把每个路径都表示出来的话太麻烦了,最简单的方法是有子节点就加1 public class Solution { publi
阅读全文
浙公网安备 33010602011771号