leetcode
ldon
这个作者很懒,什么都没留下…
展开
-
leetcode笔记—关于买股票
1.买卖股票的最佳时间(只能交易一次,买一次和卖一次)当第i天买入,所获得的受益是第i+1天到第n天中的最大的股价与买入时的差动态规划法。从前向后遍历数组,记录当前出现过的最低价格,作为买入价格,并计算以当天价格出售的收益,作为可能的最大收益,整个遍历过程中,出现过的最大收益就是所求。class Solution {public: int maxProfit(vector原创 2016-06-01 21:46:10 · 378 阅读 · 0 评论 -
leetcode笔记—最小路径数和
题意:一个m x n 的网格,每个格子里有一个非负整数,找到一条从左上角到右下角的路径,使其经过的格子数值之和最小,每一步只能向右或向下。分析:这是一道典型的动态规划题,使用动态规划求解问题,最重要的就是确定动态规划三要素:1)问题的阶段;2)每个阶段的状态;3)从前一个阶段转化到后一个阶段之间的递推关系。MPS[i][j] = Min(MPS[i-1][j],MP原创 2016-06-14 20:27:09 · 412 阅读 · 0 评论 -
leetcode笔记—Decode Ways
A message containing letters from A-Z is being encoded to numbers using the following mapping:'A' -> 1'B' -> 2...'Z' -> 26Given an encoded message containing digits, determine the total nu原创 2016-06-14 20:21:14 · 326 阅读 · 0 评论 -
Leetcode-关于二叉树的对称性
二叉树的镜像对称问题,是一个easy的题/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NUL原创 2016-04-14 20:04:28 · 716 阅读 · 0 评论 -
leetcode笔记—判断查找二叉树
首先说明一下二叉树和二叉搜索树的区别。二叉树指这样的树结构,它的每个结点的孩子数目最多为2个;二叉搜索树是一种二叉树,但是它有附加的一些约束条件,这些约束条件必须对每个结点都成立:结点node的左子树所有结点的值都小于node的值。结点node的右子树所有结点的值都大于node的值。结点node的左右子树同样都必须是二叉搜索树。假定当前结点值为k。对于二叉树中每个结点,判断其左孩子原创 2016-04-20 09:52:04 · 921 阅读 · 0 评论 -
leetcode笔记—翻转链表
1、翻转链表 void reverseNodes(ListNode *start, ListNode *end) { //翻转链表 ListNode *second = start -> next; ListNode *first = start; ListNode *temp; while(second != end) {原创 2016-05-05 09:17:52 · 590 阅读 · 0 评论 -
leetcode笔记—容纳最多水的容器
要找到条纵线然后这两条线以及X轴构成的容器能容纳最多的水。思路:找到最大的 C = min( ai , aj ) * ( j- i) ;一、从前往后遍历,每一个元素与后面所有元素进行比较,这种方法时间复杂度O(n*n),不能接受int n=height.size(); int max=0; for(int i=0;i<n-1;i++)原创 2016-05-16 22:03:44 · 405 阅读 · 0 评论 -
leetcode笔记—map容器的使用
Given [1,1,1,2,2,3] and k = 2, return [1,2].用一个map容器记下每个元素出现的次数,再用优先级队列按从大到小存下Map的元素class Solution { typedef pair data;public: vector topKFrequent(vector& nums, int k) { map map原创 2016-05-19 20:49:11 · 773 阅读 · 0 评论 -
leetcode笔记—关于动态规划
1.Integer Breakclass Solution {public: int integerBreak(int n) { if(n==2) return 1; if(n==3) return 2; vector Dp(n+1,0); Dp[0] = 1;Dp[1] = 1;原创 2016-05-24 21:04:11 · 306 阅读 · 0 评论 -
leetcode笔记—生成最大的 数组Create Maximum Number
给定两给数组,从中选取K个使这K个在原始数组中的顺序不变,使数组最大思路:涉及到三个函数:1.取数组中k个最大的元素,顺序不变; 2.合并两个数组,顺序不变,使最大; 3.比较两个数组的大小;class So原创 2016-05-25 20:51:44 · 459 阅读 · 0 评论 -
c++高效
C++高效编程忠告这是对C++高效编程的一个总结, 很有指导作用.一、#include “filename.h”和#include 的区别#include “filename.h”是指编译器将从当前工作目录上开始查找此文件#include 是指编译器将从标准库目录中开始查找此文件二、头文件的作用加强安全检测通过头文件可能方便地调用库功能,而不必关心其实现方式转载 2016-05-29 11:00:39 · 371 阅读 · 0 评论 -
leetcode笔记—求最长有效匹配括号子串的长度
class Solution {public: int longestValidParentheses(string s) { stack t; int maxlen=0,last=-1; for(int i=0;i<s.size();i++) { if(s[i]=='(') {原创 2016-05-30 21:25:57 · 804 阅读 · 0 评论 -
leetcode笔记-House Robber
1.给定一个数组,相邻的两个数不能取,从头到尾能取到的和的最大值?2.头连着尾?3.给定一个树,相邻的节点不能取,能取到的和的最大值?原创 2016-06-22 22:00:37 · 455 阅读 · 0 评论