
不会
Simmu
这个作者很懒,什么都没留下…
展开
-
LeetCode 015 3Sum
记录所有的三个数的和为0的组合,其中按照大小排序,并且不能有重复的。 这一题感觉,首先排序,我是用两个for循环求出所有的两个数的之和,但是由于前面我用map将所有的数都标记记录了一遍,所以直接验证两数之和的相反数是不是在map中来判断,但是不知道这样为何为超时,时间复杂度也就是O(n^2). 然后后面就是参照discuss中的算法来做的。简而言之,先排序,然后先确认两数之和的相反数,因为它必原创 2015-12-15 09:04:30 · 289 阅读 · 0 评论 -
LeetCode 019 Remove Nth Node From End of List
删除从结尾到开头第n个的单向链表的值,并返回链表,通过用两个指针,一个在前,一个在后,他们之前的距离就为n,当前面的指针指到结尾时,后面的也就恰恰指到目标值了,当然我是按照指到目标的前一个值来计算的,这样容易计算。 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListN原创 2015-12-20 14:20:56 · 341 阅读 · 0 评论 -
剑指offer 14 反转链表
题目描述 输入一个链表,反转链表后,输出链表的所有元素。 思路 运用递归将首尾链表的值相交换。 由于java中的函数参数传递,对于普通类型,只是值传递,而对于自定义类,则是引用传递。 /* public class ListNode { int val; ListNode next = null; ListNode(int val) {原创 2016-03-29 16:36:50 · 243 阅读 · 0 评论 -
剑指offer 4 重建二叉树
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 思路 根据前序遍历和后序遍历的规律来进行生成。 前序遍历是先遍历根节点,然后再遍历左子树,再遍历右子树。 中序遍历是先遍历原创 2016-03-23 15:52:21 · 341 阅读 · 0 评论 -
剑指offer 33 丑数
题目描述 把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 思路 首先暴力是不行的,就是从1开始往后判断,直到判断的个数为要求的个数,这样时间复杂度太大了。 简单的思路是直接生成丑数,不用考虑非丑数的部分,这样的想法是在当前的丑数序列中,已存在的原创 2016-04-09 10:35:05 · 285 阅读 · 0 评论 -
剑指offer 13 调整数组顺序使奇数位于偶数前面
题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 思路 冒泡排序一样的思路。如果有奇数和偶数相邻,那么就交换位置,使得奇数在前,偶数在后,而这样做不会使得奇数内部和偶数内部的顺序改变。 public class Solution {原创 2016-03-29 10:27:42 · 254 阅读 · 0 评论