自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

假坏

挨踢

  • 博客(47)
  • 资源 (1)
  • 收藏
  • 关注

原创 二维数组的回型遍历

#include#includeusing namespace std;void travel(int **vec,int row, int col,int level,int count){ if (row - 2 * level == 0 || col - 2 * level == 0){ return; } if (row-2*level == 1){ for (int

2016-02-20 12:37:52 1823

原创 Maximum Product of Word Lengths

class Solution {public: int maxProduct(vector& words) { int n=words.size(); vector dict(n,0); for(int i=0;i<n;++i){ for(char c:words[i]){ dict[

2015-12-16 12:15:32 509

原创 17 Letter Combinations of a Phone Number

class Solution {public: vector<string> letterCombinations(string digits) { vector<string> ans; if(digits==""){ return ans; } string combination="";

2015-12-01 16:55:47 434

原创 16 3Sum Closest

class Solution {public: int threeSumClosest(vector<int>& nums, int target) { int n=nums.size(); int closest=nums[0]+nums[1]+nums[2]; sort(nums.begin(),nums.end());

2015-12-01 16:43:41 345

原创 15 3Sum

class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { vector<vector<int>> ans; int n=nums.size(); if(n<3){ return ans; } sor

2015-12-01 16:33:28 380

原创 312 Burst Balloons

动态规划:dp[i][j]表示气球i到气球j的最佳coins 动态转移方程: dp[i][j]=max(dp[i][k-1]+nums[i-1]*nums[k]*nums[j+1]+dp[k+1][j]) k∈[i,j]class Solution {public: int maxCoins(vector<int>& nums) { for(int i=0;i<num

2015-12-01 15:41:38 2142

原创 98 Validate Binary Search Tree

题意:判断给出的二叉树是不是BST 分析:中序遍历并储存结点的值在一位数组中,如果数组是递增序列则二叉树为BST. 代码:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeN

2015-09-25 20:21:48 334

原创 257 Binary Tree Paths

题意:给定二叉树,找出所有根到叶子的路径分析:dfs.代码:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(

2015-09-25 20:13:57 355

原创 124 Binary Tree Maximum Path Sum

题意:在一棵二叉树中,找出和最大的一条路径,路径的起点和终点可以为树的任意两个节点。 分析:自底向上更新节点的值,使得节点的值表示以该点为根往下扩展能形成的路径P(注意,不一定是根到节点的路径)的最大和Sum,由于是自底向上更新的,所以更新的同时可以动态更新以二叉树每个节点作为中转节点连接以该节点左右子节点为根已形成的路径的总最大和。 代码:/** * Definition for a bin

2015-09-23 20:02:07 630

原创 213 House Robber II

题意:在House Robber的基础上做了一点修改,给出的数不是一位数组而是组成了一个环。 分析:方法同House Robber。考虑组成环之后的数,选中第一个数,最后一个数就不能再选了,综合数组nums[0,n-2]和nums[2,n-1]选较大者则为问题答案。 代码:class Solution {public: int rob(vector<int>& nums) {

2015-09-23 17:45:04 456

原创 198 House Robber

题意:给定非负数的一维数组,从中选出不相邻的一组数,使这组数之和最大。分析:动态规划,设dp[i]表示nums[0,i]所选数组的最大和,状态转移方程为dp[i]=dp[i]=max(dp[i-1],dp[i-2]+nums[i]);代码:class Solution {public: int rob(vector& nums) { int ans=0;

2015-09-23 17:25:48 365

原创 221 Maximal Square

题意:给出一个只包含0或1的二维矩阵,求矩阵中出现全为1的正方形的面积。 分析:动态规划。设dp[i][j]表示以matrix[i][j]为右下角的正方形的最大边长,转移方程为 代码:class Solution {public: int maximalSquare(vector<vector<char>>& matrix) { int row=ma

2015-09-23 10:12:38 360

原创 273 Move Zeroes

题意:把一个数组中的0全部移到数组后面,不改变其他数的相对顺序 分析:从头开始遍历,遇到0则把0移到数组最后面,定义两个数分别记录数组前面得到的整数个数a和数组最后的0的个数b,当a+b==n(n为数组长度)时遍历结束。 代码:class Solution {public: void moveZeroes(vector<int>& nums) { int a,b;

2015-09-22 13:39:05 395

原创 72 Edit Distance

题意:给出两个字符串word1、word2,现有三种操作insert delete replace每次操作只能修改一个字符,求通过这三种操作把word1转变成word2的最少次数。分析:动态规划。定义dp[i][j]表示word1的子串word1[0,i-1]转变成word2[0,j-1]的最小次数,动态转移方程为:                              dp[i][j

2015-09-22 10:57:57 343

原创 4 Median of Two Sorted Arrays

题意:找出两个已排好序数组(合并之后形成新数组)的中位数,要求复杂度为O(log(m+n)),m,n分别为两数组长度。分析:首先想到的是先把两个数组合并,最暴力的方法就是合并之后再快排一次,复杂度O代码:

2015-09-21 22:30:39 309

原创 3 Longest Substring Without Repeating Characters

题意:给出一字符串,求不出现重复字母的子串的最大长度,例如:"bbbbb",最长为1;"abcabcab",最长为3。分析:

2015-09-20 19:29:05 344

原创 2 Add Two Numbers

题意:给出两个链表的头结点,将两链表每个节点的数相加,构成新的节点。分析:链表遍历。代码:(写得比较繁琐,但比较好懂)/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x),

2015-09-18 16:22:20 248

原创 1 Two Sum

题意:给定一个数组nums和一个数target,在nums中找出和等于target的两个数,并返回两者的下标(下标从1开始)。分析:1)用两个for循环暴力两两匹配,复杂度为O(n^2),超时。            2)利用一个unordered_map或者map储存每个数和数的下标,对于每一个数nums[i]查找一次target-nums[i]是否存在,若找到返回两者在数组中的索引值+

2015-09-18 16:11:38 333

原创 222 Count Complete Tree Nodes

题意:求完全二叉树的节点个数。分析:    暴力枚举O(n)会超时。    首先,我们知道满二叉树的节点个数为2^h-1,其中h为树的高度;    其次,将完全二叉树都划分为左子树、根、右子树,由完全二叉树的定义可知,左右子树至少有一棵是满二叉树,于是总节点个数  countNodes(root) = 1+countNodes(root->left)+countNodes(root

2015-09-18 09:57:40 685

原创 151 Reverse Words in a String

题意:把一个句子中以空格隔开的单词分别反转分析:字符串操作。注意去掉首尾的空字符代码:class Solution {public: void reverseWords(string &s) { vector str; string t=""; while(s[0]==' '){ s.erase(0,1)

2015-09-17 23:42:13 538

原创 257 Binary Tree Paths

题意:给定一棵树,求出所有根到叶子节点的路径。分析:DFS。(注意int到string的转换)代码:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(in

2015-09-16 09:46:46 312

原创 62 Unique Paths

题意:求在一个mxn的矩阵中,从左上方到达右上方的路径总数。分析:动态规划。dp[i][j]=dp[i-1][j]+dp[i][j-1];代码:class Solution {public: int uniquePaths(int m, int n) { int** dp=new int*[m]; for(int i=0;i<m;++i)

2015-09-15 09:16:53 490

原创 64 Minimum Path Sum

题意:给出一个mxn的非负二维数组,求从左上方到右下方所有路径中最小的和。分析:动态规划。dp[i][j]+=max(dp[i][+1j],dp[i+1][j])代码:int minPathSum(int **grid, int nRows, int nCols) { for(int i=nRows-2;i>=0;--i){ grid[i][nCols-1]+=

2015-09-15 09:13:02 697

原创 209 Minimum Size Subarray Sum

题意:求出总和大于s的最短子序列的长度。分析:两个指针start和end,end往后移并计算start到end之间的数之和sum,不断更新end-start最小值。代码:class Solution {public: int minSubArrayLen(int s, vector& nums) { int n=nums.size(); if(

2015-09-15 00:34:46 434

原创 56 Merge Intervals

题意:合并一系列有重合的区间。例如:Given [1,3],[2,6],[8,10],[15,18],    return[1,6],[8,10],[15,18].分析:按start升序排列,再根据end合并。复杂度为O(nlogn).代码:/** * Definition for an interval. * struct Interval { * int star

2015-09-14 10:47:22 423

原创 9 Palindrome Number

题意:判断一个数是否是回文。分析:按照回文的定义进行判断,分别比较第一个和倒数一个数、第二个和倒数第二个数、以此类推。代码:class Solution {public: bool isPalindrome(int x) { if(x<0) return false; int count=1; while(x/count>=1

2015-09-14 09:46:34 270

原创 201 Bitwise AND of Numbers Range

题意:给定两个数m,n,求区间[M,N]上所有数的AND的结果。分析:由于区间[m,n]是连续的,由二进制数的特点,求该区间上所有数的AND结果相当于求m和n的都为1的共同前缀。代码:class Solution {public: int rangeBitwiseAnd(int m, int n) { int count=0; while(m!

2015-09-13 16:27:01 341

原创 100 Same Tree

题意:判断两棵二叉树是否相同。分析:递归。代码:/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL),

2015-09-13 10:32:37 291

原创 43 Multiply Strings

题意:给定两个整数num1、num2,计算两者乘积。分析:大数相乘。此题较为简单,不包含正负号、小数点等复杂的情况。代码:(1)普通大数乘法:

2015-09-11 10:47:13 350

原创 131 Palindrome Partitioning

题意:将字符串划分为回文子串序列,求所有的划分方式。分析:考虑将一个字符串划分为子串序列,共有2^(n-1)种不同划分(n为字符串长度),深搜,记录路径并判断每个子串是否为回文,复杂度为O(2^N)。代码:class Solution {public: vector> partition(string s) { vector> ans; vec

2015-09-10 20:15:30 287

原创 279 Perfect Squares

题意:定义perfect squares number 为(1,4,9,16,...) 给出一个正整数n,返回和为n的最小的perfect squares number 的数目。例如:n=12 ,返回3, 因为 12=4+4+4 ;            n=13,返回2,因为13=4+9 。分析:动态规划,squares[i]表示i的最小perfect squares number,

2015-09-10 10:11:15 1765

原创 278 First Bad Version

First Bad VersionYou are a product manager and currently leading a team to develop a new product. Unfortunately, the latest version of your product fails the quality check. Since each version is dev

2015-09-09 12:18:53 585

原创 N个正数选取若干个数之和最接近M

问题描述:给定N个正数(A1,、A2、A3、...、AN),从中选取若干(k)个数,使得这些数之和最接近M。算法分析:最接近可能有两种情况,一种是k个数之和小于M,另一种是k个数之和大于M,所以问题可看成两个01背包问题(背包容量分别为M和A1+A2+A3+...+AN-M),较大的为结果。

2015-07-07 09:49:44 4074

转载 Pareto

Pareto Optimality:帕累托最优是指资源分配的一种理想状态,即假定固有的一群人和可分配的资源,从一种分配状态到另一种状态的变化中,在没有使任何人境况变坏的前提下,也不可能再使某些人的处境变好。换句话说,就是不可能再改善某些人的境况,而不使任何其他人受损。Pareto解:多目标规划中,由于存在目标之间的冲突和无法比较的现象,一个解在某个目标上是最好的,在其他的目标上可能比较差。Pa

2015-05-28 21:26:29 5445

原创 random_shuffle函数

上次写遗传算法用到STL里的random_shuffle函数,算法的主要思想在《计算机程序设计艺术》的3.4.2节有详细的分析,现在这里简单说明一下算法的实现。应包含头文件:        #include函数原型:SGI版本一template inline void random_shuffle(RandomAccessIterator first, RandomAcces

2015-01-04 17:03:18 4494

原创 遗传算法解决TSP问题(C++)

#include#include#include#include#include#include#include#include #include#includeusing namespace std;class GA{private: struct City{ //城市(名、坐标)结构 string name; //名称

2014-12-10 19:43:28 4206 2

原创 Java编写简单客户/服务器程序

1.建立EchoServer服务器,监听来自客户的连接EchoServer.java:package chapter01;import java.io.*;import java.net.*;public class EchoServer { private int port = 8000; //服务器端口号(IP默认为本地主机IP) priv

2014-12-02 16:11:05 612

原创 关于P、NP、NPC和NP-Hard问题

1、P问题    P中包含的是能在多项式时间内解决的问题,此类问题的时间复杂度不超过O(),期中n为问题输入规模,k为常数。2、NP问题    NP中包含的是能在多项式时间内验证某个解是否正确的问题。    比如:(1)所有的P问题都是NP问题,因为我们总能在多项式时间内验证给定的某个解是否正确。               (2)对于某些不属于P问题的问题,如3-CNF可满足

2014-12-01 21:30:02 834

原创 一个一直忽略的问题

先看看下面两端代码:1. int m=-1; while(m) { m++; } cout2. int m=-1; while(m++) { } cout输出结果分别为:01

2013-07-02 19:51:25 534

原创 TCP建立连接与释放连接

最近复习准备《计算机网络》考试,感觉TCP协议建立连接与释放连接这两个过程比较重要,所以把自己理解的部分写下来。1.建立连接:(三次握手)(1)客户端发送一个SYN包给服务器,然后等待应答。(2)服务器端回应给客户端一个ACK=1、SYN=1的TCP数据段。(3)客户必须再次回应服务器端一个ACK确认数据段。2.释放连接:(四次挥手)(1) TCP客户端发送

2013-06-24 02:00:51 709

数据仓库与数据挖掘_k_means_聚类_图片处理_代码

数据仓库与数据挖掘课程实验,用VC、Java或Matlab实现K-means聚类算法进行图片处理

2013-06-05

空空如也

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

TA关注的人

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