自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

xshengh_blog

A code maker...

  • 博客(43)
  • 收藏
  • 关注

原创 Leetcode Linked List Cycle

判断一个链表是不是循环链表。初始化两个指向头部的指针,一个每次走两步,一个每次走一步,如果相遇就是循环链表,反之则不是。特殊情况是空链表不是循环链表。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(i

2013-10-31 17:35:29 505

原创 Leetcode Container With Most Water

设置两个指针i, j,固定较低的边,另一边向中间移动,找到比当前边更高的位置,更新最大容积,循环直至i >=j 结束。class Solution {public: int maxArea(vector &height) { // Start typing your C/C++ solution below // DO NOT write int ma

2013-10-31 17:06:13 504

原创 Leetcode Remove Nth Node From End of List

删除倒数第n个元素,扫一遍,记录要删除的元素。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {

2013-10-27 22:01:59 492

原创 Leetcode Pascal's Triangle II

组合数,从左到右分别是C(n, 0), C(n, 1)……C(n, n)。注意每次计算的时候记得用long long来存,否则会溢出。class Solution {public: vector getRow(int rowIndex) { // Note: The Solution object is instantiated only once and is

2013-10-27 10:05:15 503

原创 Leetcode Rotate Image

先沿对角线翻转,然后沿矩阵的y轴再翻转一次。class Solution {public: void rotate(vector > &matrix) { // Note: The Solution object is instantiated only once and is reused by each test case. for(int i =

2013-10-26 23:59:13 451

原创 Leetcode Minimum Path Sum

dp题,动归方程为:dp[i][j] = min(dp[i-1][j], dp[i][j-1])+grid[i][j],dp[i][j]表示到达坐标为(i,j)方格的最短路径。class Solution {public: int minPathSum(vector > &grid) { // Note: The Solution object is instan

2013-10-26 21:33:37 518

原创 Leetcode Permutations

dfs,据说是UC2013年实习生招聘的笔试题。class Solution {public: vector > permute(vector &num) { // Note: The Solution object is instantiated only once and is reused by each test case. vector >

2013-10-26 21:31:10 484

原创 Leetcode Search a 2D Matrix

这里用了一种O(m+n)的方法,还有更快的二分法,详情可查看http://leetcode.com/2010/10/searching-2d-sorted-matrix.htmlclass Solution {public: bool searchMatrix(vector > &matrix, int target) { // Note: The Solution

2013-10-26 21:29:39 566

原创 Leetcode Unique Paths

用了两种方法。第一种是直接计算组合数,C(m-1, m+n-2),本来以为会溢出,m, n最大能到100,结果测试数据还是过了。第二种是dp,dp[i][j] = dp[i-1][j]+dp[i][j-1,dp[i][j]表示到达坐标为(i,j)方格的方案数。Solution 1:class Solution {public: int uniquePaths(int

2013-10-26 21:25:12 569

原创 Leetcode Spiral Matrix II

蛇形矩阵。一开始写的代码太繁琐了,上网看了别人的题解以后,重新写了一遍。class Solution {public: vector > generateMatrix(int n) { // Note: The Solution object is instantiated only once and is reused by each test case.

2013-10-26 21:18:12 617

原创 Leetcode Binary Tree Level Order Traversal II

与上一题类似,不过要求按倒序来输出。存的时候用stack来存就可以了。遍历完后再存到vector里面。/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(

2013-10-26 21:13:46 607

原创 Leetcode Binary Tree Level Order Traversal

层次遍历,把每一层结点的数存在一个vector里面。bfs,用两个队列,一个队列存结点,一个队列存层数。看到网上的一些题解,还可以用dfs做,NB。/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; *

2013-10-26 21:08:30 691

原创 Leetcode Gray Code

首先先确定n个bit的格雷码序列一共有2^n个数。然后二进制转格雷码:从最右边一位起,依次将每一位与左边一位异或(XOR),作为对应格雷码该位的值,最左边一位不变(相当于左边是0)。这里用了一个小技巧,就是把数右移一位,然后与原来的数异或,就实现了以上的功能。class Solution {public: vector grayCode(int n) {

2013-10-24 16:38:30 561

转载 Oracle实现分组统计记录

转载自:http://www.cnblogs.com/Automation_software/archive/2011/03/02/1968737.html今天刚上班不久,QQ滴滴的响个不停,看了下信息是一个网友要我帮忙下一个SQL语句,大体意思是:统计heart_active字段为不同情况的记录数,然后按时间来分组。我想了下,心里想这好办,于是马上建了一个表,语句如下:CREATE

2013-10-21 10:53:35 695

转载 Oracle 取前10条记录

转载自:http://blog.sina.com.cn/s/blog_7042a6c10100zs49.html1.oracle 取前10条记录 1) select * from tbname where rownum  2) select * from (select * from tbname order by id desc ) where rownum 下面是关于r

2013-10-21 10:47:26 1103

原创 Leetcode Balanced Binary Tree

判断一棵树是不是平衡二叉树。(http://baike.baidu.com/view/593144.htm)dfs,一直搜到最底,然后返回高度,往前判断每个结点在左右子树的高度差是否大于1,做标记返回即可。/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *lef

2013-10-20 11:31:23 468

原创 Leetcode Best Time to Buy and Sell Stock

与上一题“Best Time to Buy and Sell Stock 2”不同的是,这次的约束条件是只能买一次和卖一次。方法也挺简单的,从头到尾扫一次,并记录当前最小值和最大利润,如果遇到比最小值小的则更新最小值,否则如果利润(当前所指的数-最小值)大于当前最大利润则更新。class Solution {public: int maxProfit(vector &pric

2013-10-20 11:26:18 729

原创 Leetcode Pascal's Triangle

杨辉三角。class Solution {public: vector > generate(int numRows) { // Note: The Solution object is instantiated only once and is reused by each test case. vector > v; for(i

2013-10-19 10:13:52 572

原创 Leetcode Integer to Roman

整数转罗马数,与前面的“Roman to Integer”类似,做简单转化即可。class Solution {public: string intToRoman(int num) { // Note: The Solution object is instantiated only once and is reused by each test case.

2013-10-19 10:12:11 566

转载 C#中DateTime类用法大全

转载自:http://wenku.baidu.com/view/b6515cc14028915f804dc26a.html1、与DateTime类相关的函数:DateTime.Now.ToShortTimeString()DateTime dt = DateTime.Now;dt.ToString();//2005-11-5 13:21:25dt.ToFileTi

2013-10-18 15:19:00 1180

原创 Leetcode Swap Nodes in Pairs

这题代码写得太丑了。实在不想提。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public

2013-10-17 23:16:09 508

原创 Leetcode Roman to Integer

罗马数转整数,比较新鲜。罗马数的记数方法和组数规则可以参考http://baike.baidu.com/link?url=mYiSRssk7gcAkxAsio8k0tfjy7dZV8PYMYvpW28rLGxfLJimaoIibKS_WPTY2KEy理解了以后再做就简单了不少。class Solution {public: bool judge(string s, int

2013-10-16 12:58:22 525

原创 Leetcode Remove Element

与上一题“Remove Duplicates from Sorted Array”类似。class Solution {public: int removeElement(int A[], int n, int elem) { // Note: The Solution object is instantiated only once and is reused by

2013-10-16 10:18:17 546

原创 Leetcode Remove Duplicates from Sorted Array

数组删除重复元素,要求常数的空间复杂度。比较简单。class Solution {public: int removeDuplicates(int A[], int n) { // Note: The Solution object is instantiated only once and is reused by each test case.

2013-10-15 22:22:05 610

转载 Oracle中TO_DATE、TO_CHAR格式

TO_CHAR 是把日期或数字转换为字符串TO_DATE 是把字符串转换为数据库中得日期类型转换函数TO_NUMBER 将字符转化为数字TO_CHAR 使用TO_CHAR函数处理数字 TO_CHAR(number, '格式') TO_CHAR(salary,’$99,999.99’); 使用TO_CHAR函数处理日期 TO_CHAR(date,’格式’);

2013-10-15 16:25:08 990

原创 Leetcode Maximum Subarray

经典最大子串和问题,要求用两种方法实现:1、Kadane算法,复杂度O(n); 2、分治法,复杂度O(nlogn)。1、Kadane算法:代码比较简单,但是理解需要时间。初始化ans为0, 每次用ans加上A[i]的值,并更新最大值,如果遇到ansclass Solution {public: int maxSubArray(int A[], int n) {

2013-10-14 14:12:57 4190

原创 Leetcode Populating Next Right Pointers in Each Node

把每个结点的next指针指向其右边结点。注意:1、要求常数空间复杂度;2、假设该树是一个完美二叉树(叶子结点在同一层,每个父结点都有两个子结点);3、所有结点的next指针初始化是NULL。方法有很多,这里的作法是bfs层次遍历,同时记录每个最右边的结点,每次判断如果碰到的是最右边结点就设置其next指针为null,否则就设置为队列中的front结点。/** * Defi

2013-10-14 11:11:34 711

原创 Leetcode Convert Sorted Array to Binary Search Tree

把有序数组转化成平衡的二叉搜索树。以下摘自百度百科:平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。构造与调整方法 平衡二叉树的常用算法有红黑树、AVL、Treap、伸展树等。 最小二叉平衡树的节点的公式如下 F(n)=F(n-1

2013-10-14 11:03:18 1623 1

转载 标准输入流中空白字符的怪异 —— 区分 scanf 与 cin

在论坛上看到有人提出一个如下的问题,在此总结一下。原问题:http://topic.csdn.net/u/20110414/22/90d0606c-9876-48e4-9b69-bd8bd8a41897.html #include   int main()  {      int ival1 = 123, ival2 = 1;      ch

2013-10-13 20:06:45 879

原创 Leetcode Symmetric Tree

判断一棵二叉树是否对称。下图的二叉树就是对称的: 1 / \ 2 2 / \ / \3 4 4 3 而下图的二叉树就是非对称的: 1 / \ 2 2 \ \ 3 3分别用递归和非递归的方法实现:递归法:/** * Definition for binary tree * str

2013-10-13 18:48:55 627

原创 Leetcode Climbing Stairs

斐波那契。class Solution {public: int climbStairs(int n) { // Note: The Solution object is instantiated only once and is reused by each test case. if(!n) return 0; vector ar

2013-10-13 13:12:42 709

原创 Leetcode Merge Two Sorted Lists

将两个有序(默认是升序)的链表合并,由于要返回head结点,所以一开始要增加一个dummy(虚拟的)结点,即cur一开始new出来的。如果head结点为空的话,设置head结点为cur->next。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *n

2013-10-13 13:11:22 583

原创 Leetcode Remove Duplicates from Sorted List

典型的链表删除操作。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:

2013-10-12 21:30:47 658

原创 Leetcode Search Insert Position

二分查找,找到的话返回mid, 找不到返回low。int searchInsert(int A[], int n, int target) { // Note: The Solution object is instantiated only once and is reused by each test case. int low = 0, high =

2013-10-12 19:44:11 519

原创 Leetcode Unique Binary Search Trees

其实就是找规律,有点动态规划的味道,扫一遍尝试把每一个结点都作为根结点。那么当该结点作为根节点时,其左边结点构成左子树的方案数乘以右边结点构成右子树的方案数,就是该结点作为根节点的方案数。把每一个结点作为根节点的方案数相加的总数就是答案。class Solution {public: int numTrees(int n) { // Note: The S

2013-10-12 19:22:59 508

原创 Best Time to Buy and Sell Stock II

这道题看懂题目就会做的了。题意大致为:每一时刻只能有一股在手,你在买新股前要把旧股卖掉。将数组扫一遍,记录当前最小值,碰到比最小值小的数则更新;每次一碰到比最小值大的数就卖掉,并把当前股价置为最小值。class Solution {public: int maxProfit(vector &prices) { // Note: The Solution obj

2013-10-12 18:42:40 645

原创 Leetcode Reverse Integer

简单的数字反转,考虑溢出的情况。增加一个大于int的参数,当溢出的时候返回INT_MAX或者INT_MIN即可。class Solution {public: int reverse(int x) { // Note: The Solution object is instantiated only once and is reused by each test

2013-10-12 10:20:47 518

原创 Leetcode Same Tree

判断两个树是否相同,包括树的结构和借点得知都一样。同样可以用递归判断两棵树的左子树和右子树是否相同,也可以用非递归对两棵树进行层次遍历,并标记他们是左结点还是右结点,然后进行判断。非递归法:/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; *

2013-10-12 09:56:17 553

原创 Leectcode Maximum Depth of Binary Tree

Description:Given a binary tree, find its maximum depth.The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.Solution:求二叉树的深度。可以递归也

2013-10-12 09:38:35 543

原创 Leetcode Single Number

Description:Given an array of integers, every element appears twice except for one. Find that single one.Note:Your algorithm should have a linear runtime complexity. Could you implement it without

2013-10-09 19:43:43 487

空空如也

空空如也

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

TA关注的人

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