自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 矩阵的之字型遍历

给你一个包含 m x n 个元素的矩阵 (m 行, n 列), 求该矩阵的之字型遍历。样例对于如下矩阵:[ [1, 2, 3, 4], [5, 6, 7, 8], [9,10, 11, 12]]返回 [1, 2, 5, 9, 6, 3, 4, 7, 10, 11, 8, 12][1,// 2, 5,// 9, 6, 3,// 4, 7

2016-10-28 17:31:46 387

原创 克隆二叉树

/** * Definition of TreeNode: * public class TreeNode { *     public int val; *     public TreeNode left, right; *     public TreeNode(int val) { *         this.val = val; *         this

2016-10-28 10:48:33 154

原创 平面列表

给定一个列表,该列表中的每个要素要么是个列表,要么是整数。将其变成一个只包含整数的简单列表。样例给定 [1,2,[1,2]],返回 [1,2,1,2]。给定 [4,[3,[2,[1]]]],返回 [4,3,2,1]。【递归实现】/** * // This is the interface that allows for creating nested lists. 

2016-10-28 09:43:30 476

原创 二进制求和

给定两个二进制字符串,返回他们的和(用二进制表示)。样例a = 11b = 1返回 100public class Solution {    /**     * @param a a number     * @param b a number     * @return the result     * 主要考虑进位  !!最后一位的进位

2016-10-27 09:27:31 212

原创 把排序数组转换为高度最小的二叉搜索树

给一个排序数组(从小到大),将其转换为一棵高度最小的排序二叉树。样例给出数组 [1,2,3,4,5,6,7], 返回 4 / \ 2 6 / \ / \1 3 5 7/** * Definition of TreeNode: * public class TreeNode { *     p

2016-10-26 21:58:46 252

原创 子树

有两个不同大小的二进制树: T1 有上百万的节点; T2 有好几百的节点。请设计一种算法,判定 T2 是否为 T1的子树。 注意事项若 T1 中存在从节点 n 开始的子树与 T2 相同,我们称 T2 是 T1 的子树。也就是说,如果在 T1 节点 n 处将树砍断,砍断的部分将与 T2 完全相同。样例下面的例子中 T2 是 T1 的子树: 1

2016-10-26 09:16:13 164

原创 在O(1)时间复杂度删除链表节点

给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。样例给定 1->2->3->4,和节点 3,删除 3 之后,链表应该变为 1->2->4。/** * Definition for ListNode. * public class ListNode { *     int val; *     L

2016-10-25 15:42:17 622

原创 二进制中有多少个1

计算在一个 32 位的整数的二进制表式中有多少个 1.样例给定 32 (100000),返回 1给定 5 (101),返回 2给定 1023 (111111111),返回 9!!!!!注意负数public class Solution {    /**     * @param num: an integer     * @return: a

2016-10-25 11:17:58 574

原创 最长上升连续子序列

给定一个整数数组(下标从 0 到 n-1, n 表示整个数组的规模),请找出该数组中的最长上升连续子序列。(最长上升连续子序列可以定义为从右到左或从左到右的序列。) 注意事项time样例给定 [5, 4, 2, 1, 3], 其最长上升连续子序列(LICS)为 [5, 4, 2, 1], 返回 4.给定 [5, 1, 2, 3, 4], 其最长上升连续子

2016-10-25 10:04:51 227

原创 翻转一棵二叉树

样例 1 1 / \ / \2 3 => 3 2 / \ 4 4挑战 递归固然可行,能否写个非递归的?/** * Definition of TreeNode: * public class TreeNode { *     public int val;

2016-10-24 17:33:21 366

原创 将二叉树拆成链表

将一棵二叉树按照前序遍历拆解成为一个假链表。所谓的假链表是说,用二叉树的 right 指针,来表示链表中的 next 指针。 注意事项不要忘记将左儿子标记为 null,否则你可能会得到空间溢出或是时间溢出样例 1 \ 1 2 / \ \

2016-10-21 17:20:06 354

原创 两两交换链表中的节点

给一个链表,两两交换其中的节点,然后返回交换后的链表。样例给出 1->2->3->4, 你应该返回的链表是 2->1->4->3。/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNo

2016-10-21 15:23:47 2545

原创 栅栏染色

我们有一个栅栏,它有n个柱子,现在要给柱子染色,有k种颜色可以染。必须保证任意两个相邻的柱子颜色不同【应改为最多有两个相邻柱子颜色相同】,求有多少种染色方案。样例n = 3, k = 2, return 6 post 1, post 2, post 3way1 0 0 1 way2 0 1

2016-10-20 16:33:09 521

原创 左填充

实现一个leftpad库,如果不知道什么是leftpad可以看样例样例leftpad("foo", 5)>> " foo"leftpad("foobar", 6)>> "foobar"leftpad("1", 2, "0")>> "01"String对象是不可改变的。每次使用 System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这

2016-10-20 14:52:04 269

原创 形状工厂

工厂模式是一种常见的设计模式。实现一个形状工厂 ShapeFactory来创建不同的形状类。这里我们假设只有三角形,正方形和矩形三种形状。样例ShapeFactory sf = new ShapeFactory();Shape shape = sf.getShape("Square");shape.draw();>> ---->> | |>> | |>> -

2016-10-20 11:18:38 403

原创 玩具工厂

工厂模式是一种常见的设计模式。请实现一个玩具工厂 ToyFactory 用来产生不同的玩具类。可以假设只有猫和狗两种玩具。样例ToyFactory tf = ToyFactory();Toy toy = tf.getToy('Dog');toy.talk(); >> Wowtoy = tf.getToy('Cat');toy.talk();>> Meow/

2016-10-20 11:13:07 486

原创 移动零

给一个数组 nums 写一个函数将 0 移动到数组的最后面,非零元素保持原数组的顺序 注意事项1.必须在原数组上操作2.最小化操作数给出 nums = [0, 1, 0, 3, 12], 调用函数之后, nums =[1, 3, 12, 0, 0].public class Solution {    /**     * @param

2016-10-20 11:12:16 245

原创 单例

单例 是最为最常见的设计模式之一。对于任何时刻,如果某个类只存在且最多存在一个具体的实例,那么我们称这种设计模式为单例。例如,对于 class Mouse (不是动物的mouse哦),我们应将其设计为 singleton 模式。你的任务是设计一个 getInstance 方法,对于给定的类,每次调用 getInstance 时,都可得到同一个实例。      单例模式(Single

2016-10-20 10:08:28 564

原创 中位数

给定一个未排序的整数数组,找到其中位数。中位数是排序后数组的中间值,如果数组的个数是偶数个,则返回排序后数组的第N/2个数。PS:用快排,时间复杂度为O(n)public class Solution {    /**     * @param nums: A list of integers.     * @return: An integer denotes

2016-10-19 15:31:17 240

原创 整数排序

给一组整数,按照升序排序。使用归并排序,快速排序,堆排序或者任何其他 O(n log n) 的排序算法。若从空间复杂度来考虑:首选堆排序,其次是快速排序,最后是归并排序。若从稳定性来考虑,应选取归并排序,因为堆排序和快速排序都是不稳定的。若从平均情况下的排序速度考虑,应该选择快速排序。 1.归并排序:分治法(Divide and Conquer)的一个非常典型的应用

2016-10-19 11:14:05 403

原创 两数组的交 II

样例nums1 = [1, 2, 2, 1], nums2 = [2, 2], 返回 [2, 2].public class Lint548 {    /**     * @param nums1 an integer array     * @param nums2 an integer array     * @return an integer arr

2016-10-17 22:17:04 264

原创 冒泡/选择排序

冒泡:相邻元素两两比较,相比大的放在后面,第一次比较结束后最大值出现在数组最后选择:先找到数组中最小的放在第一个,之后从第二个开始继续比较后面的找到第二小的,以此类推。public class Solution {    /**     * @param A an integer array     * @return void     */    public v

2016-10-17 11:33:22 302

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除