自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode Subsets II

Given a collection of integers that might contain duplicates, nums, return all possible subsets (the power set).Note: The solution set must not contain duplicate subsets.题意:给定一个集合(集合元素可能有重复),输出所有子集。cla

2017-12-16 16:12:54 275

原创 leetcode Partition List

Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.You should preserve the original relative order of the nodes in each of the

2017-12-09 15:22:57 197

原创 leetcode Reverse Nodes in k-Group

Given a linked list, reverse the nodes of a linked list k at a time and return its modified list.k is a positive integer and is less than or equal to the length of the linked list. If the number of nod

2017-11-30 11:09:09 273

原创 leetcode Letter Combinations of a Phone Number

Given a digit string, return all possible letter combinations that the number could represent.Input:Digit string “23” Output: [“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].题意:手机键盘上的一个数字与多个字母对

2017-11-29 11:37:47 236

原创 leetcode Combination Sum

1、 Given a set of candidate numbers (C) (without duplicates) and a target number (T), find all unique combinations in C where the candidate numbers sums to T.The same repeated number may be chosen fr

2017-11-24 11:16:30 258

原创 leetcode Unique Binary Search Trees

Given n, how many structurally unique BST’s (binary search trees) that store values 1…n?For example, Given n = 3, there are a total of 5 unique BST’s.1 3 3 2 1 \ /

2017-11-23 11:43:41 186

原创 leetcode 3Sum

Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero.Note: The solution set must not contain duplic

2017-11-22 21:00:49 155

原创 leetcode Container With Most Water

Given n non-negative integers a1, a2, …, an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lin

2017-11-21 13:49:23 172

原创 leetcode Merge k Sorted Lists

Merge k sorted linked lists and return it as one sorted list. Analyze and describe its complexity. 题意:合并k个排序数组(升序排列)1、递归/** * Definition for singly-linked list. * struct ListNode { * int val;

2017-11-19 10:55:08 226

原创 leetcode Generate Parentheses

Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.For example, given n = 3, a solution set is:[ “((()))”, “(()())”, “(())()”, “()(())”,

2017-11-18 10:35:01 170

原创 leetcode Longest Palindromic Substring

Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.Example:Input: “babad”Output: “bab”Note: “aba” is also a valid answer.题意:找到字符串s中最

2017-11-17 16:36:20 149

原创 leetcode ZigZag Conversion

The string “PAYPALISHIRING” is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)P A H N A P L

2017-11-16 11:46:48 193

原创 leetcode Median of Two Sorted Arrays

There are two sorted arrays nums1 and nums2 of size m and n respectively.Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).Example 1: - nums1 = [1, 3]

2017-11-16 11:16:50 153

原创 奇偶位交换

题目描述请编写程序交换一个数的二进制的奇数位和偶数位。(使用越少的指令越好)给定一个int x,请返回交换后的数int。测试样例:10 返回:5思路:位操作,考虑先将所有的奇数位右移一位,将所有的偶数位左移一位,再将两个数合并。使用0x10101010作为掩码,提取出奇数位,然后右移一位,使用0x01010101作为掩码,提取出偶数位,然后左移一位,将两数合并为一个数(因为前面提取出奇数位时,

2017-11-06 10:28:16 1022

原创 集合栈

题目描述请实现一种数据结构SetOfStacks,由多个栈组成,其中每个栈的大小为size,当前一个栈填满时,新建一个栈。该数据结构应支持与普通栈相同的push和pop操作。给定一个操作序列int[][2] ope(C++为vector&ltvector&ltint>>),每个操作的第一个数代表操作类型,若为1,则为push操作,后一个数为应push的数字;若为2,则为pop操作,后一个数无意义。请

2017-11-06 10:12:44 266

原创 魔术索引

题目描述:1、在数组A[0..n-1]中,有所谓的魔术索引,满足条件A[i]=i。给定一个升序数组,元素值各不相同,编写一个方法,判断在数组A中是否存在魔术索引。请思考一种复杂度优于o(n)的方法。给定一个int数组A和int n代表数组大小,请返回一个bool,代表是否存在魔术索引。测试样例:[1,2,3,4,5] 返回:false思路:遍历数组,时间复杂度O(n),要求复杂度优于o(n),

2017-11-05 11:13:27 234

原创 机器人走方格

一、有一个XxY的网格,一个机器人只能走格点且只能向右或向下走,要从左上角走到右下角。请设计一个算法,计算机器人有多少种走法。给定两个正整数int x,int y,请返回机器人的走法数目。保证x+y小于等于12。测试样例:2,2 返回:2思路:共需走x+y步,其中有x步向又走,y步向左走,即从x+y步中选出x步的种类数, 即(x+y)!/(x!+y!)class Robot {public

2017-11-04 11:37:50 810

原创 双栈排序

题目描述请编写一个程序,按升序对栈进行排序(即最大元素位于栈顶),要求最多只能使用一个额外的栈存放临时数据,但不得将元素复制到别的数据结构中。给定一个int[] numbers(C++中为vector&ltint>),其中第一个元素为栈顶,请返回排序后的栈。请注意这是一个栈,意味着排序过程中你只能访问到第一个元素。 测试样例:[1,2,3,4,5]返回:[5,4,3,2,1]思路:新栈存放排好序的

2017-11-03 09:53:36 291

原创 有向路径检查

题目描述对于一个有向图,请实现一个算法,找出两点之间是否存在一条路径。给定图中的两个结点的指针UndirectedGraphNode* a,UndirectedGraphNode* b(请不要在意数据类型,图是有向图),请返回一个bool,代表两点之间是否存在一条路径(a到b或b到a)。思路:深度优先搜索或广度优先搜索,为避免图中有环,要记录每个节点是否访问过。 广度优先搜索很适合用来查找最短路径

2017-11-02 10:29:20 434

转载 检查是否为BST

题目描述:请实现一个函数,检查一棵二叉树是否为二叉查找树。给定树的根结点指针TreeNode* root,请返回一个bool,代表该树是否为二叉查找树。二叉查找树:所有左边的节点小于等于当前节点,而当前节点必须小于所有右边的节点1、中序遍历二叉树/*struct TreeNode { int val; struct TreeNode *left; struct Tree

2017-11-01 11:02:19 233

原创 回文链表

题目描述:请编写一个函数,检查链表是否为回文。给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文。 测试样例:{1,2,3,2,1}返回:true{1,2,3,2,3}返回:false思路:将链表前半部分存入vector容器,和后半部分比较,由于不知道链表长度,使用快慢指针来取链表前半部分,注意链表长度为奇数时,跳过中间的元素/*struct ListNode {

2017-10-31 12:11:28 172

原创 访问单个节点的删除

题目描述: 实现一个算法,删除单向链表中间的某个结点,假定你只能访问该结点。 给定待删除的节点,请执行删除操作,若该节点为尾节点,返回false,否则返回true思路:将待删除节点的下一个节点复制到待删除节点,然后删掉下一个节点/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : va

2017-10-30 12:55:02 158

原创 像素翻转

题目描述: 有一副由NxN矩阵表示的图像,这里每个像素用一个int表示,请编写一个算法,在不占用额外内存空间的情况下(即不使用缓存矩阵),将图像顺时针旋转90度。 给定一个NxN的矩阵,和矩阵的阶数N,请返回旋转后的NxN矩阵,保证N小于等于500,图像元素小于等于256。 测试样例: [[1,2,3],[4,5,6],[7,8,9]],3 返回:[[7,4,1],[8,5,2],[9,6

2017-10-30 12:19:56 182

原创 翻转子串

题目描述假定我们都知道非常高效的算法来检查一个单词是否为其他字符串的子串。请将这个算法编写成一个函数,给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成,要求只能调用一次检查子串的函数。给定两个字符串s1,s2,请返回bool值代表s2是否由s1旋转而成。字符串中字符为英文字母和空格,区分大小写,字符串长度小于等于1000。 测试样例:“Hello world”,”worldhello

2017-10-29 11:44:01 271

原创 基本字符串压缩

题目描述:利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串“aabcccccaaa”经压缩会变成“a2b1c5a3”。若压缩后的字符串没有变短,则返回原先的字符串。给定一个string iniString为待压缩的串(长度小于等于10000),保证串内字符均由大小写英文字母组成,返回一个string,为所求的压缩后或未变化的串。 测试样例“aabcccccaaa”返

2017-10-29 11:19:45 364

原创 git基本命令

//创建版本库:找一个合适的地方,创建一个空目录$ mkdir test$ cd test//通过git init命令把这个目录变成Git可以管理的仓库$ git init//用命令git add告诉Git,把文件添加到仓库$ git add 文件名//用命令git commit告诉Git,把文件提交到仓库$ git commit -m "描述文件的改动"//运行git status命令看

2017-10-26 15:11:24 447

原创 Vim基本命令

1、在vim中按u可以撤销一次操作 u 撤销上一步的操作 Ctrl+r 恢复上一步被撤销的操作2、

2017-10-26 14:39:36 237

原创 二叉搜索树的第k个结点

题目描述: 给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。思路: 二叉搜索树的中序遍历序列是递增的,使用中序遍历。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right;

2017-10-26 10:51:22 137

原创 链表中环的入口结点

题目描述: 一个链表中包含环,请找出该链表的环的入口结点。思路: 1、判断链表是否存在环,若存在求出环中节点数目nodesInLoop求环中节点数目,首先要先进入环,定义两个指针,一个一次沿链表走两个节点,一个一次走一个节点,两个指针相遇的节点肯定在环中,然后从相遇节点开始沿链表走,再次回到该节点所用步数,即为环中节点个数。2、定义两个指针,一个先沿链表走nodesInLoop步,剩余节点个

2017-10-25 11:14:07 178

原创 数组中只出现一次的数字

题目描述: 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路: 由于两个相同的数字异或等于0,将数组中所有数字异或之后 肯定得到一个非零数,找到该数二进制位表示的第一个非零位,记位第n位,遍历数组,依次判断数组中元素的第n位是否为1,为1的分为一组,为0的分为一组,则两个只出现一次的数字肯定被分到了不同组中,将两组数分别异或,即可得到两个只出现一

2017-10-24 23:10:20 139

原创 两个链表的第一个公共结点

题目描述: 输入两个链表,找出它们的第一个公共结点。思路: 题目要求单链表,第一个公共节点之后的节点均为两个链表的公共节点,先求两个链表的长度,较长的链表先由头结点往后遍历,直到剩余链表长度等于短链表长度,两个链表一起遍历,直到第一个相同节点,即为第一个公共节点。 时间复杂度O(n)/*struct ListNode { int val; struct ListNode *n

2017-10-24 22:39:32 140

原创 按之字形顺序打印二叉树

题目描述: 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。 思路: 使用队列正序(从左到右)存储节点,每次循环将队列中节点值保存到一层,出对,然后将下一层节点按序入队。 设一个值辨别偶数行,偶数行翻转容器输出/*struct TreeNode { int val; struct

2017-10-24 11:33:21 231

原创 二叉树的下一个结点

题目描述: 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路: 1、当前节点有右子树,则下一个节点为右子树中最左节点,即右子树沿着左子节点指针一直走完的最后一个节点。 2、当前节点没有右子树,且为父节点的左子节点,父节点为其下一个节点。 3、当前节点没有右子树,且为父节点的右子节点,则沿着指向父节点的指

2017-10-24 10:47:49 143

原创 二叉树中和为某一值的路径

题目描述: 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。思路:只有当所经过节点之和为所需值,并且当前节点为叶子节点时,路径为符合题意的路径。要找到所有符合题意的路径,需要遍历所有节点,只有前序遍历为先遍历根节点,/*struct TreeNode { int val; struct T

2017-10-23 10:29:37 124

原创 二叉搜索树的后序遍历序列

题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。思路:二叉搜索树左子树节点小于根节点,右子树节点大于根节点,而后序遍历结果的最后一个节点为根节点,由根节点的值和后序遍历序列,求出根节点的左子树和右子树,然后递归,分别判断左右子树是否满足条件。class Solution {public:

2017-10-21 12:03:46 160

原创 数值的整数次方

题目描述: 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 思路:1、当幂为负时,取倒数;2、当幂为0时,若底非0,则取1,若底为0,无意义,也取1;3、遍历则时间复杂度为O(n),对求幂进行优化,当幂数为偶数时,结果为幂为exponent/2的两个数的乘积,当幂为奇数时,结果为幂为(exponent-1)/2的两个数的乘积,

2017-10-20 11:32:14 157

原创 矩形覆盖

题目描述 我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?斐波那契数列 1、递归class Solution {public: int rectCover(int number) { if (number == 0) return 0; if (number == 1) re

2017-10-18 12:33:08 120

原创 重建二叉树

题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 思路:由前序遍历找到根节点,带到中序遍历中找到相应的位置,该位置之前为根节点的左子树,之后为根节点的右子树,遍历/** * Definition f

2017-10-18 12:12:43 154

原创 leetcode Longest Substring Without Repeating Characters 最长不重复子串

Given a string, find the length of the longest substring without repeating characters.Examples:Given “abcabcbb”, the answer is “abc”, which the length is 3.Given “bbbbb”, the answer is “b”, with the

2017-10-16 11:36:25 148

原创 从上往下打印二叉树

题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 思路:用一个数组保存打印节点的顺序,一个数组保存打印节点的值。/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x),

2017-10-15 11:33:46 151

空空如也

空空如也

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

TA关注的人

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