12 2019 档案

合并两个排序的链表(剑指offer_25)
摘要:题目描述 解题思路 递归 public ListNode Merge(ListNode list1, ListNode list2) { if (list1 == null) return list2; if (list2 == null) return list1; if (list1.val < 阅读全文

posted @ 2019-12-31 14:57 Hebye 阅读(182) 评论(0) 推荐(0)

反转链表(剑指offer_24)多看多思多想
摘要:解题思路 递归 程序刚开始执行,if 语句失效,进入 else 语句,然后执行Node *newhead = reverseList(head->next);第二个结点的指针参数传入递归函数,一直到,最后一个结点的指针参数传入递归函数,if 语句有效head->next == NULL,返回当前的h 阅读全文

posted @ 2019-12-31 13:45 Hebye 阅读(130) 评论(0) 推荐(0)

链表中环的入口结点(剑指offer_23)
摘要:题目描述 一个链表中包含环,请找出该链表的环的入口结点。要求不能使用额外的空间。 解题思路 使用双指针,一个快指针fast每次移动两个节点,一个慢指针slow每次移动一个节点。因为存在环,所以两个指针必定相遇在环中的某个节点上。 假设环入口节点为y1,相遇所在节点为z1。 假设快指针fast在圈内绕 阅读全文

posted @ 2019-12-31 12:27 Hebye 阅读(165) 评论(0) 推荐(0)

链表中倒数第k个节点
摘要:解题思路 设链表的长度为N。设置两个指针P1和P2,先让P1移动K个节点,则还有N-K个节点可以移动。此时让P1和P2同时移动,可以知道当P1移动到链表结尾时,P2移动到第N-K个节点处,该位置就是倒数第K个节点。 public ListNode FindKthToTail(ListNode hea 阅读全文

posted @ 2019-12-30 16:13 Hebye 阅读(148) 评论(0) 推荐(0)

调整数组顺序使奇数位于偶数前面(剑指offer_21)
摘要:题目描述 需要保证奇数和奇数,偶数和偶数之间的相对位置不变,这和书本不太一样。 解题思路 方法一:创建一个新数组,时间复杂度 O(N),空间复杂度 O(N)。 public void reOrderArray(int[] nums) { //奇数个数 int oddCnt = 0; for(int 阅读全文

posted @ 2019-12-30 15:07 Hebye 阅读(286) 评论(0) 推荐(0)

表示数值的字符串(剑指offer_20)
摘要:题目描述 true "+100" "5e2" "-123" "3.1416" "-1E-16" false "12e" "1a3.14" "1.2.3" "+-5" "12e+4.3" 解题思路 [] : 字符集合 () : 分组 ? : 重复 0 ~ 1 次 + : 重复 1 ~ n 次 * : 阅读全文

posted @ 2019-12-30 13:12 Hebye 阅读(308) 评论(0) 推荐(0)

正则表达式匹配(剑指offer_19)
摘要:题目描述 请实现一个函数用来匹配包括 '.' 和 '*' 的正则表达式。模式中的字符'.'表示任意一个字符,而 '*' 表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符中的所有字符匹配整个模式。例如,字符串 “aaa” 与模式 “a.a” 和 “ab*ac*a” 匹配,但是与“a 阅读全文

posted @ 2019-12-29 14:29 Hebye 阅读(490) 评论(0) 推荐(0)

删除链表中重复的结点
摘要:题目描述 解题描述 public ListNode deleteDuplication(ListNode pHead) { if(pHead == null || pHead.next == null) { return pHead; } ListNode next = pHead.next; if 阅读全文

posted @ 2019-12-29 13:38 Hebye 阅读(112) 评论(0) 推荐(0)

在O(1)时间内删除链表节点(剑指offer_18.1)
摘要:解题思路 如果该节点不是尾结点,那么可以直接将下一个节点的值赋给该节点,然后该节点指向下下个节点,再删除下一个节点,时间复杂度为O(1)。 否则,就需要先遍历链表,找到节点的前一个节点,然后让前一个节点指向null,时间复杂度为O(N)。综上,如果进行N次操作,那么大约需要操作节点的次数为N-1+N 阅读全文

posted @ 2019-12-29 13:12 Hebye 阅读(283) 评论(0) 推荐(0)

打印从1到最大的n位数(剑指offer_17_多看)
摘要:题目描述 输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1/2/3一直到最大的3位数即999。 解题思路 由于n可能非常大,因此不能直接用int来表示数字,而是用char数组进行存储。 使用回溯法得到所有的数。 用字符串表示数字的时候,最直观的方法就是字符串里每个字符都是 ' 阅读全文

posted @ 2019-12-28 16:42 Hebye 阅读(317) 评论(0) 推荐(0)

数值的整数次方(剑指offer_16)
摘要:题目描述 给定一个double类型的浮点数base和int类型的整数exponent, 求base 的 exponent次方。 解题思路 下面的讨论x代表base,n代表exponent。 因为 (x*x)n/2 可以通过递归求解,并且每次递归n都减小一半,因此整个算法的时间复杂度为 O(logN) 阅读全文

posted @ 2019-12-28 15:00 Hebye 阅读(152) 评论(0) 推荐(0)

二进制中1的个数(剑指offer_15)
摘要:题目描述 输入一个整数,输出该数二进制表示中1的个数。 n&(n-1) 该位运算去除n的位级表示中最低的那一位。 n : 10110100 n-1 : 10110011 n&(n-1) : 10110000 一个结论 结论:一个数与该数减一的结果进行与运算n&(n-1),会把该数右边(低位)第一个1 阅读全文

posted @ 2019-12-28 14:36 Hebye 阅读(214) 评论(0) 推荐(0)

剪绳子(剑指offer_14)
摘要:题目描述 把一根绳子剪成多段,并且使得每段的长度乘积最大。 n = 2 return 1 (2 = 1 + 1) n = 10 return 36 (10 = 3 + 3 + 4) 贪心尽可能多剪长度为3的绳子,并且不允许有长度为1的绳子出现。如果出现了,就从已经切好长度为3的绳子中拿出一段与长度为 阅读全文

posted @ 2019-12-27 15:05 Hebye 阅读(167) 评论(0) 推荐(0)

机器人的运动范围(剑指offer_13)
摘要:题目描述 地上有一个m行和n列的方格。一个机器人从坐标(0,0)的格子开始移动,每一次只能向上下左右四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7=18。但是,他不能进入方格(35,38),因为3+5+3 阅读全文

posted @ 2019-12-27 13:08 Hebye 阅读(160) 评论(0) 推荐(0)

矩阵中的路径(剑指offer_12)
摘要:题目描述 判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中上下左右移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不在进入这个格子。 例如下面的矩阵包含了一条bfce路径。 解题思路 使用回溯法(backtracking)进行 阅读全文

posted @ 2019-12-26 13:46 Hebye 阅读(225) 评论(0) 推荐(0)

旋转数组中的最小数字(剑指offer_11)
摘要:题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 解题思路 将旋转数组对半分可以得到一个包含最小元素的新旋转数组,以及一个非递减排序的数组。新的旋转数组的数组元素是原数组的一半,从而将问题规模减少了一半,这种折半 阅读全文

posted @ 2019-12-26 13:14 Hebye 阅读(137) 评论(0) 推荐(0)

变态跳台阶(剑指offer_10.4)
摘要:题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级...它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 解题思路 动态规划 public int JumpFloorII(int target) { int[] dp = new int[target]; Arrays.fill(d 阅读全文

posted @ 2019-12-25 14:58 Hebye 阅读(205) 评论(0) 推荐(0)

跳台阶(剑指offer_10.3)
摘要:题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级台阶总共有多少种跳法。 解题思路 当 n= 1时,只有一种跳法: 当n=2时,有两种跳法: 跳n阶台阶,可以先跳1阶台阶,再跳n-1阶台阶;或者先跳2阶台阶,再跳n-2阶跳阶。而n-1和n-2阶台阶的跳法可以看成子问题,该问 阅读全文

posted @ 2019-12-25 14:27 Hebye 阅读(170) 评论(0) 推荐(0)

矩形覆盖(剑指offer_10.2)
摘要:题目描述 我们可以用2*1的小矩形横着或者竖着取覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法? 解题思路 当n为1时,只有一种覆盖方法: 当 n 为 2 时,有两种覆盖方法: 要覆盖 2*n 的大矩形,可以先覆盖 2*1 的矩形,再覆盖 2*(n-1) 的 阅读全文

posted @ 2019-12-25 14:10 Hebye 阅读(156) 评论(0) 推荐(0)

斐波那契数列(剑指offer_10.1)
摘要:题目描述 求斐波那契数列的第n项,n <=39。 解题思路 如果使用递归求解,会重复计算一些子问题。例如,计算f(4)需要计算f(3)和f(2),计算f(3)需要计算f(2)和f(1),可以看到f(2)被重复计算了。 递归是将一个问题划分为多个子问题求解,动态规划也是如此,但是动态规划会把子问题的解 阅读全文

posted @ 2019-12-25 13:24 Hebye 阅读(280) 评论(0) 推荐(0)

cs229
摘要:同在自学cs229。我是看完ng在coursera上的机器学习视频来的。一楼的老兄说的没错,听课之前最好还是先浏览一下材料,然后不懂的地方去结合李航的《统计学习方法》上面找答案。实战的话,《机器学习实战》对初学者很友好。Ng讲完哪个算法,去《统计》上巩固一下,然后找到《实战》上对应的章节用pytho 阅读全文

posted @ 2019-12-24 15:13 Hebye 阅读(227) 评论(0) 推荐(0)

用两个栈实现队列(剑指offer_9)
摘要:题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 解题思路 in栈用来处理入栈(push)操作,out栈用来处理出栈(pop)操作。一个元素进入in栈之后,出栈的顺序被反转。当元素要出栈时,需要先进入out栈,此时元素出栈顺序再一次被反转,因此出栈顺序就和最开始入栈顺序是相同的,先 阅读全文

posted @ 2019-12-24 14:36 Hebye 阅读(269) 评论(0) 推荐(0)

二叉树的下一个结点(剑指offer_8)
摘要:题目描述 给定一个二叉树和其中一个结点,请找出中序遍历顺序的下一个结点并返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 public class TreeLinkNode { int val; TreeLinkNode left = null; TreeLinkNode rig 阅读全文

posted @ 2019-12-24 14:01 Hebye 阅读(190) 评论(0) 推荐(0)

重建二叉树(剑指offer_7)
摘要:题目描述 根据二叉树前序遍历和中序遍历的结果,重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。 解题思路 前序遍历的第一个值为根节点的值,使用这个值将中序遍历结果分为两部分,左部分为树的左子树中序遍历结果,右部分为右子树中序遍历结果。然后分别对左右子树递归地求解。 // 缓存中 阅读全文

posted @ 2019-12-23 22:27 Hebye 阅读(192) 评论(0) 推荐(0)

从头到尾打印链表(剑指offer_6)
摘要:题目描述 从尾到头反过来打印出每个结点的值。 解题思路 1.使用递归 要逆序打印链表 1->2->3(3,2,1),可以先逆序打印链表2->3(3,2),最后再打印第一个节点1。 最后再打印第一个节点1。 而链表2->3可以看成一个新的链表,要逆序打印该链表可以继续使用求解函数,也就是在求解函数中调 阅读全文

posted @ 2019-12-23 21:30 Hebye 阅读(409) 评论(0) 推荐(0)

替换空格(剑指offer_5)
摘要:题目描述: 将一个字符串中的空格替换成"%20"。 Input: "A B" Output: "A%20B" 解题思路: 在字符串尾部填充任意字符,使得字符串的长度等于替换之后的长度。因为一个空格要替换成三个字符(%20),所以当遍历到一个空格时,需要在尾部填充两个任意字符。 令P1指向字符串原来的 阅读全文

posted @ 2019-12-22 16:02 Hebye 阅读(167) 评论(0) 推荐(0)

二维数组中的查找(剑指offer_4)
摘要:给定一个二维数组,其每一行从左到右递增排序,从上到下也是递增排序。给定一个数,判断这个数是否在该二维数组中。 Consider the following matrix: [ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 阅读全文

posted @ 2019-12-22 15:16 Hebye 阅读(156) 评论(0) 推荐(0)

数组中重复的数字(剑指offer_3)
摘要:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 Input: {2,3,1,0,2,5} Output: 2 解题思路: 要求时间复杂度O(N),空间复杂度O(1)。因此不能使用 阅读全文

posted @ 2019-12-22 14:29 Hebye 阅读(285) 评论(0) 推荐(0)

希腊字母读法
摘要:希腊字母读法:Α α:阿尔法 AlphaΒ β:贝塔 BetaΓ γ:伽玛 GammaΔ δ:德尔塔 DeltaΕ ε:艾普西龙 EpsilonΖ ζ :捷塔 ZetaΕ η:依塔 EtaΘ θ:西塔 ThetaΙ ι:艾欧塔 IotaΚ κ:喀帕 Kappa∧ λ:拉姆达 LambdaΜ μ:缪 阅读全文

posted @ 2019-12-17 15:00 Hebye 阅读(1066) 评论(0) 推荐(0)

215. Kth Largest Element in an Array
该文被密码保护。

posted @ 2019-12-15 21:47 Hebye 阅读(1) 评论(0) 推荐(0)

荷兰国旗问题
该文被密码保护。

posted @ 2019-12-15 15:49 Hebye 阅读(1) 评论(0) 推荐(0)

刷题网站
该文被密码保护。

posted @ 2019-12-06 14:09 Hebye 阅读(0) 评论(0) 推荐(0)

导航