自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (6)
  • 收藏
  • 关注

原创 leetcode 22. Generate Parentheses

题意 生成n对正确形式的括号序列题解 主要由next_permutation生成全排列后判断各个字符串是否满足(isOK)。代码class Solution {public: bool isOK(string str) { stack<int> st; int len = str.length(); for(int i =

2016-02-29 21:32:22 252

原创 leetcode 21. Merge Two Sorted Lists

题意 合并链表,小的数在前面。题解 使用指针pre保存新链表中上次保存的值,新值用pre->next = new ListNode(x)创建。代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int

2016-02-29 20:55:26 197

原创 leetcode 20. Valid Parentheses

题意 括号的匹配问题题解 利用栈处理代码class Solution {public: bool isValid(string s) { stack<int> st; int len = s.length(); for(int i = 0; i < len; i++) { if(s[i] =

2016-02-28 20:57:20 207

原创 leetcode 19. Remove Nth Node From End of List

题意 删除单链表中倒数第n个元素题解 先计算链表长度len,倒数第n个元素等于正向第len - n + 1个元素。(由于第一次循环时iter指向第二个元素,所以只需循环len-n次。)代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next;

2016-02-28 20:40:46 199

原创 leetcode 18. 4Sum

题意 找四个不重复的数,使他们相加结果为给定的target题解 将数组排序后,枚举两个不重复的元素A和B,然后用binary_search函数二分查找剩余值(剩余值通过枚举任意两数相加的和形成的新数组cd来表示)。 两数的和sum,两数的下标c、d用一个结构体CD保存。代码struct CD{ int sum; int c; int d; CD(in

2016-02-27 23:17:47 217

原创 leetcode 17. Letter Combinations of a Phone Number

题意 给定一个数字字符串,枚举各个数字对应的字母组合后的字符串(不重复)。题解 一个串中字母的重复次数,即后面字母形成串的可能种数。 给定数字”234”,对应串“abc”、“def”、“ghi”,所有可能的串的种数是3 * 3 * 3 = 27; 第一个串的每个字母的重复次数为:len(“def”) * len(“ghi”) = 9,第二、第三个串以此类推。代码class

2016-02-27 16:47:12 236

原创 leetcode 16. 3Sum Closest

题意 找三个数相加最接近的目标的数题解 将数组排序后,枚举两个不重复的元素A和B,然后用lower_bound函数二分查找第一个大于等于剩余值的数,然后检查这个数和这个数左边的值是否离目标更近。代码class Solution {public: int skip(vector<int>& nums, int i) { int size = nums.si

2016-02-25 21:29:31 214

原创 leetcode 15. 3Sum

题意 查找三个相加为0的数,且不重复。题解 将数组排序后,枚举两个不重复的元素A和B,然后二分查找剩余-(A+B)。代码class Solution {public: int binary_search(vector<int>& nums, int left, int right, int target) { while (left <= right)

2016-02-24 22:46:34 272

原创 leetcode 14. Longest Common Prefix

题意 求所有字符串的最长公共前缀。题解 注意容器长度和字符串长度的边界条件。代码class Solution {public: string longestCommonPrefix(vector<string>& strs) { int len = strs.size(); if (len == 1) return str

2016-02-24 18:23:36 234

原创 leetcode 13. Roman to Integer

题意 将罗马数字(字符串)转换为整数题解 数字对应的罗马数字为: 1~9: {“I”, “II”, “III”, “IV”, “V”, “VI”, “VII”, “VIII”, “IX”}, 10~90: {“X”, “XX”, “XXX”, “XL”, “L”, “LX”, “LXX”, “LXXX”, “XC”}, 100~900: {“C”, “CC”, “CCC”

2016-02-23 15:53:58 232

原创 leetcode 12. Integer to Roman

题意 将整数转换为罗马数字。题解 数字对应的罗马数字为: 1~9: {“I”, “II”, “III”, “IV”, “V”, “VI”, “VII”, “VIII”, “IX”}, 10~90: {“X”, “XX”, “XXX”, “XL”, “L”, “LX”, “LXX”, “LXXX”, “XC”}, 100~900: {“C”, “CC”, “CCC”, “C

2016-02-23 14:26:41 328

原创 leetcode 11. Container With Most Water

题意 求任意两条线段之间围成的面积最大值。题解 (左右线段高度不一样时取小的,面积为: min(height[left], height[right]) * (right - left);代码class Solution {public: int maxArea(vector<int>& height) { int left = 0; in

2016-02-23 14:00:48 236

转载 Rational统一过程(Rational Unified Process)

转自: http://blog.csdn.net/shadowyelling/article/details/7412336 和: http://www.ibm.com/developerworks/cn/rational/r-rupbp/软件的生命周期就好比人的生命周期——从婴儿时期,幼儿时期,少年时期,青年时期,中年时期到老年时期以及最后死亡的过程一样,软件也有从生产期消亡期的过程。而统

2016-02-22 14:49:53 14868

原创 leetcode 10. Regular Expression Matching

题意 模拟简单的正则表达式,”a*”可以匹配0个或多个a;”.”可以匹配任意字符题解 正则表达式的字符为*时可能发生递归(匹配0个字符或多个字符)。 if (p + 1) == : 1. match(s, p + 2); //match 0 char 2. match(s + i + 1, p + 2); (if *(s+i) == *p) //match more

2016-02-17 23:01:35 228

原创 leetcode 9. Palindrome Number

题意 判断一个整数是否是回文数,负数直接返回false。题解 将int转为string后判断。代码class Solution {public: bool isPalindrome(int x) { char intstr[64+1]; int i = 0; if(x < 0) return false;

2016-02-17 17:01:30 229

原创 leetcode 8. String to Integer (atoi)

题意 将字符串转化为整数。正数溢出返回整数最大值,负数溢出返回整数最小值(32位)。题解 如题意所示。代码class Solution {public: int myAtoi(string str) { int i = 0; bool negtive = false; int signnum = 0; while(

2016-02-17 13:05:37 264

原创 leetcode 7. Reverse Integer

题意 将整数倒置,溢出返回0。题解 如题意所示。代码class Solution {public: int reverse(int x) { if (x == (1 << 31)) // x = MININT (1 << 31), OVERFLOW return 0; bool negtive = false;

2016-02-17 11:59:05 175

原创 leetcode 6. ZigZag Conversion

题意 将字符串转化为之字形后,按行排列成新字符串题解 如题意所示。代码class Solution {public: string convert(string s, int numRows) { if (s.length() == 1) return s; const int MAXLEN = 1000;

2016-02-16 18:59:47 155

原创 leetcoode 5. Longest Palindromic Substring

题意 求最长的回文子串。如:cabbad是abba; cabad是aba题解 直接枚举所有子串再判断是否是回文串会超时。 用动态规划解决。一个i到j的字符串是回文串的子问题是:i+1到j-1也是回文串。 状态转移方程为: dp[i][j] = true; (i ==j) dp[i][j] = false; (s[i] != s[j]) d

2016-02-16 17:48:30 262

原创 leetcoode 4. Median of Two Sorted Arrays

题意 求两个有序数组的中位数。(偶数个数字则返回两个中位数的平均值)题解 直接用归并排序中merge两个数组找中位数,但时间是O(m+n) 没想出来,就参考了网友的解答 http://blog.csdn.net/yutianzuijin/article/details/11499917/ 将找中位数归结为找第k小的数。一次排除k/2个数,所以时间复杂度是O(

2016-02-15 19:03:10 316

原创 leetcoode 1.Add Two Numbers

题意 找两个数组中的数相加结果为target,返回它们的下标题解 枚举代码class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { int len = nums.size(); vector<int> result; for (int i

2016-02-14 15:29:03 297

原创 leetcoode 2.Add Two Numbers--链表

题意 链表整数加法。题解 先在结果链表复制L1链表,然后再遍历加上L2。代码class Solution {public: ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) { ListNode *pre, *now, *head, *result; //head = new ListNode

2016-02-14 15:25:47 257

原创 leetcoode 3.Longest Substring Without Repeating Characters

题意 找各个字符都不同的最长子串。题解 使用STL自带的hash容器map。枚举每个起始位置开始的子串需要O(n^2),会超时。使用尺取法在O(n)时间内解决。代码class Solution {public: int lengthOfLongestSubstring(string s) { int len = s.length(); if (

2016-02-14 15:00:31 251

原创 POJ 3641 -- 快速幂运算,素数判定

快速幂运算 模运算 素数判定 题意 判定一个数p是否为伪素数。 如果一个非素数 p 对任何 a > 1 满足 a^p = a (mod p),则称p是伪素数。题解 用快速幂运算求a^p % p ,如果结果等于p并且p不是素数,则p是伪素数。 由于值很小,可以用下面两种方法判定。 (1)若小于根号p的素数里没有能整除p的,则p是素数 。(2)使用Miller_Rab

2016-02-03 19:17:36 384

原创 POJ 3126 -- 素数判定(埃氏筛法)+BFS

素数-埃氏筛法 BFS 题意 给两个4位的素数作为原始和目标素数,从原始素数开始,每次只能变动一位且变动后仍是素数,直到最后变成目标素数。求最小的变动次数,无法变成则输出0题解 使用BFS解决。 1. 一个数在一次变化中,4个位每位都有10种可能(0–9),一共是40种,将变化后仍是素数的数入队。 2. 素数用埃氏筛法判定代码#include <iostream>#incl

2016-02-02 23:32:29 409

转载 POJ 2429 -- miller-rabin素数测试,Pollard_rho素因子分解

转载自: http://blog.sina.com.cn/s/blog_69c3f0410100uac0.html题意 给出两个整数 m、n ( m =< n < 2^63),求出两个整数 a、b ,使他们的最大公约数为 m ,最小公倍数为 n ,如果有多组,取 a + b 值最小的那一组。题解 由题意,则令 p = a / m , q = b / m , s = n / m,则有GCD(

2016-02-02 18:34:21 422

原创 POJ 1258 -- 最小生成树(prim算法)

最小生成树 prim算法题意 给定一个N个顶点的图,使连通一个农场的所用的路径长度之和最小。题解 使用prim最小生成树算法,计算连通一个图(即N-1条边)的最短路径和代码#include <iostream>using namespace std;const int MAXN = 1000;const int INF = 1e9;int graph[MAXN][MAXN];in

2016-02-02 14:13:02 331

原创 POJ 3259 -- 最短路径 ( bellman ford算法, 允许负权边)

图论 最短路径 bellman ford算法题意 N个点的图,2M条正权双向边,W条负权单向边。问图中是否存在负环?题解 用bellman-ford算法判断。bellman-ford算法在挑战程序设计竞赛中的P100代码#include <iostream>using namespace std;const int MAXN = 10000;const int INF = (1<<

2016-02-01 23:46:38 261

原创 POJ 2139-- 最短路径 (floyd算法,任意两点间的最短路径)

图论 最短路径 Floyd算法 题意 奶牛之间的关系图,求一头奶牛到其他奶牛最短路径和 的最小值题解 用floyd算法求图中任意两点之间的距离,枚举每个奶牛到其他奶牛的最短路径和,找到最小值。(d[u][v]表示边(u,v)的权值,不存在则是INF,d[i][i] = 0)floyd算法在挑战程序设计竞赛中的P103代码#include <iostream>#include <cstr

2016-02-01 18:15:00 493

原创 POJ 1703 --并查集(具体类别未知的划分)

题意 一个城市里有两个帮派, 1. (A [a] [b] )为已知信息,表示a和b属于不同帮派,但不知a和b具体属于哪个帮派。 2. (D [a] [b] )判断a和b是否属于一个帮派或未知。题解 使用和挑战程序设计竞赛书中P89类似的并查集(58行处使用cin输入会导致超时)。 匪徒人数为N,帮派数为2。则给每个人i创建2个元素i-A(用i表示)和i-B(用i

2016-02-01 16:16:49 316

CSAPP Lab1:Manipulating Bits实验材料

《深入理解计算机系统》实验一(操作bit) 实验材料

2016-03-11

CSAPP Lab2: Defusing a Binary Bomb实验材料

《深入理解计算机系统》实验二--拆除二进制炸弹 实验材料

2016-03-11

CSAPP Lab 5:Writing a Dynamic Storage Allocator实验材料

《深入理解计算机系统》课程的实验5材料 解答过程在:http://blog.csdn.net/u010560443/article/details/50611251

2016-03-11

CSAPP实验5(二进制炸弹)材料

解答过程在:http://blog.csdn.net/u010560443/article/details/50857359

2016-03-11

CSAPP实验5(动态内存分配器)资料

CSAPP实验5(动态内存分配器)资料

2016-03-11

codeblocks使用指南

codeblocks使用指南,很好的开发工具

2015-01-14

空空如也

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

TA关注的人

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