LeetCode
文章平均质量分 53
利村村长
这个作者很懒,什么都没留下…
展开
-
LeetCode357. Count Numbers with Unique Digits
比较简单的做法是根据排列组合的知识算出n位数各位不相同的数字共有9*9*.....(9-n+2)个(n>=2),当n为1时是10个,然后累加就行。class Solution {public: int countNumbersWithUniqueDigits(int n) { if(n==0) return 1; else if(n==1) r原创 2016-07-01 12:59:18 · 317 阅读 · 0 评论 -
LeetCode 84. Largest Rectangle in Histogram(直方图最大矩形)
链接:LeetCode 84. Largest Rectangle in Histogram(直方图最大矩形)class Solution {public: int largestRectangleArea(vector& heights) { int len=heights.size(); if(len==0) return 0; s原创 2016-09-04 19:31:00 · 398 阅读 · 0 评论 -
LeetCode96.Unique Binary Search Trees
题目链接:https://leetcode.com/problems/unique-binary-search-trees/大意:给出一个正整数n,求n个不同数组成的排序二叉树的个数思路:二叉排序树的特点是每一个节点,它的左节点比它小,右节点比它大,运用到这一题,可以用动态规划的思想,每一个数都可以作为根节点,如n个数,1~n,当第k个数即k作为根节点时,1-(k-1)在它的左子树,元素数原创 2016-08-02 18:59:58 · 242 阅读 · 0 评论 -
LeetCode268. Missing Number
题目链接:https://leetcode.com/problems/missing-number/题目大意:一个数组有n个数,每个数取自0~n,各不相同,找出没有出现的那个数。这题简单,就不细说了,主要是限制条件是使用常量的额外空间,所以设一个标识数组的做法是行不通的。class Solution {public: int missingNumber(vector&原创 2016-08-02 22:32:52 · 298 阅读 · 0 评论 -
LeetCode108. Convert Sorted Array to Binary Search Tree
题目链接:https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/大意:给出一个拍过徐的vector,将其转化为一颗排序二叉树,要求高度最低。分析:从排序二叉树的特点分析,就是做二分法。/** * Definition for a binary tree node. * struct Tree原创 2016-08-02 17:40:34 · 278 阅读 · 0 评论 -
LeetCode22. Generate Parentheses
题目链接:https://leetcode.com/problems/generate-parentheses/大意:给一个整数n,列出n对()所能组成的所有合法排列例:n=3时,有四种排列["((()))","(()())","(())()","()(())","()()()"]分析:n对()就表示一共可以放n个左括号和n个右括号,记录下左括号和右括号的使用情况:只要左括号没有放完,原创 2016-08-01 19:57:30 · 239 阅读 · 0 评论 -
LeetCode 13:Roman to Integer
这题其实很简单,知道罗马数字的规则就可以。从左往右遍历即可。class Solution {public: int romanToInt(string s) { //I(1),V(5),X(10),L(50),C(100),D(500),M(1000) //在一个较大的罗马数字的右边记上一个较小的罗马数字,表示大数字加小数字。 //在一个较大的数字的左原创 2015-10-22 22:08:42 · 85 阅读 · 0 评论 -
LeetCode70. Climbing Stairs
这题是简单的动态规划问题class Solution {public: int climbStairs(int n) { //动态规划 s[n]=s[n-1]+s[n-2] if(n<=2) return n; int s[n]={0},i=2; s[0]=1; s[1]=2; while原创 2016-01-27 20:56:09 · 256 阅读 · 0 评论 -
LeetCode 28 Implement strStr()
字符串模式匹配,可以用暴力的方法,也可以用KMP算法。这里只给出KMP算法做记录。#include#includeusing namespace std;class Solution {public: int strStr(string haystack, string needle) { int m=haystack.size(); int n原创 2016-04-08 20:18:49 · 240 阅读 · 0 评论 -
LeetCode155. Min Stack
好像是剑指offer上的原题。主要是要用额外的空间保存当前最小值的信息。class MinStack {public: void push(int x) { num.push(x); if(mins.size()>0){ int min=mins.top(); if(min>=x) mins.push(x原创 2016-04-11 23:04:23 · 244 阅读 · 0 评论 -
LeetCode 338. Counting Bits
比较容易想到的就是一个个数拿出来判断有几个1,判断时可以采用n&(n-1)来简化过程,不过时间复杂度明显就是O(n*sizeof(integer)).。此外可以采用动态规划来做,对于一个大于1的整数,其二进制至少有2位,假设是n位,可以把它分成前(n-1)位和最后1位分别统计。class Solution {public: vector countBits(int num) {原创 2016-04-14 18:39:36 · 236 阅读 · 0 评论 -
LeetCode347. Top K Frequent Elements
先利用map统计各数的个数,再用vector存储统计结果,自定义vector排序class Solution {public: vector topKFrequent(vector& nums, int k) { vector m; if(k>=nums.size()) return nums; map cnt;原创 2016-06-30 15:18:40 · 272 阅读 · 0 评论 -
LeetCode 85. Maximal Rectangle(最大子矩阵)
链接:LeetCode 85. Maximal Rectangle这一题要用到直方图最大矩阵作为一个中间结果。class Solution {public: int maximalRectangle(vector>& matrix) { vector tmp; int len=matrix.size(); if(len==0) re原创 2016-09-04 19:48:32 · 1478 阅读 · 0 评论