自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode 92. Reverse Linked List II

题意 将链表上第m到n之间的结点反转(原地且一趟)题解 如题代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */clas

2016-05-24 21:42:04 368

原创 POJ 1050. To the Max

参考:http://blog.csdn.net/liufeng_king/article/details/8632430题意 求最大子矩阵和(动态规划问题最大子序列和的变种)题解 枚举所有子矩阵的开始行i1和结束行i2,那么当前子矩阵第j列的和b[j] = a[i1][j] + a[i1 + 1][j] +… a[i2][j],此时最大子矩阵和就变成求一维数组b的最大子序列和。代码#in

2016-05-16 10:10:22 429

原创 leetcode 91. Decode Ways

题意 对给定的数字串编码成字母,不合法的输出0题解 使用动态规划解决。满足nums[i - 1] * 10 + nums[i]时dp[i] = dp[i - 1] + dp[i - 2],否则dp[i] = dp[i - 1]代码public class Solution { int result = 0; public int numDecodings(String s)

2016-05-05 22:05:03 413

原创 leetcode 90. Subsets II

题意 生成子集(即所有组合)题解 使用dfs。代码public class Solution { ArrayList<List<Integer>> lists = new ArrayList<List<Integer>>(); ArrayList<Integer> temp = new ArrayList<Integer>(); void combine(int[]

2016-05-05 21:15:30 290

原创 leetcode 89. Gray Code

题意 相连的两个数的二进制位只有一位不同。题解 给数组中前面已有的数添加新的最高位(从后往前),保证任意两个数只相差一个。 dfs保证遍历了所有情况,但是不能保证上述条件,所以不使用dfs。代码public class Solution { public List<Integer> grayCode(int n) { List<Integer> resu

2016-04-29 11:10:41 286

原创 leetcode 88. Merge Sorted Array

题意 归并两个有序数组nums1,保证归并后仍有序题解 如题代码public class Solution { public void merge(int[] nums1, int m, int[] nums2, int n) { int[] nums = new int[n + m]; int index = 0; int i =

2016-04-27 21:48:56 308

原创 leetcode 86. Partition List

题意 将小于x的结点插到大于等于x的数之前题解 如题代码java version:/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */pu

2016-04-27 21:29:11 398

原创 leetcode 83. Remove Duplicates from Sorted List

题意 删除有序链表中的重复元素,即所有元素没有重复的题解 如题代码class Solution {public: ListNode* deleteDuplicates(ListNode* head) { if(!head) return NULL; ListNode *now = head, *next= head->ne

2016-04-27 18:17:36 188

原创 leetcode 82. Remove Duplicates from Sorted List II

题意 删除有序链表中的重复元素题解 设置一个虚拟的头结点vhead,防止删除链表头结点。代码/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {}

2016-04-27 17:40:25 270

原创 leetcode 81. Search in Rotated Sorted Array II

参考: https://yq.aliyun.com/articles/3888题意 在有序的旋转数组中查找目标值(旋转有序指:一个数组被分割成两个有序的区间,且两区间能相连成一个有序的大区间。如45123)题解 应为任意一个点分割的两个区间至少有一个是有序的,所以可以使用二分查找的方法解决。 注:由于有序数组中可能会有重复的数字,如113111,如果nums[mid] == nums

2016-04-24 21:13:57 251

原创 leetcode 80. Remove Duplicates from Sorted Array II

题意 移除数组中超过2个的相同整数题解 如题代码“`c++ class Solution { public: int removeDuplicates(vector& nums) { int cnt = 0, nowcnt = 0; int size = nums.size(); vector result;

2016-04-24 19:40:32 296

原创 leetcode 79. Word Search

题意 在矩阵中找连续字符形成的目标串(字符的上下左右的字符都是连续的)题解 dfs。遍历矩阵,以每个为word[0]字符的起点开始查找,对于已经查找过的点用visited[i] = true来标记, 回溯时修改回visited[i] = false.代码class Solution {public: int n,m; bool visited[1000][1000];

2016-04-24 11:48:56 232

原创 leetcode 77. Combinations

题意 求在区间[1,n]内的k个数的所有组合。题解 用一个flag数组表示区间内的一个数是否在当前组合内:存在(true)、不存在(false)代码class Solution {public: vector<vector<int> > result; void combine_recur(bool flag[], int pos, int n, int k)

2016-04-17 11:31:11 248

原创 leetcode 75. Sort Colors

题意 排序。题解 如题。直接使用STL的sort就可以过。代码“`c++ class Solution { public: int patition(vector &nums, int low, int high) { int key = nums[low]; int swapPos = low; for(in

2016-04-17 11:03:31 393

原创 leetcode 74. Search a 2D Matrix

题意 在一个特殊的矩阵(每个元素的右方和下方都比它大)中查找目标值题解 根据规律来解。即从右上方开始查找,若目标值大于当前值,说明目标在当前值的下方;若小于,则说明目标在当前值左边。代码class Solution {public: bool searchMatrix(vector<vector<int>>& matrix, int target) { int

2016-04-17 10:46:29 245

原创 leetcode 73. Set Matrix Zeroes

题意 将矩阵中为0点它所在行和列都设置为0题解 用两个集合保存需要设置的行和列。时间复杂度为O(m + n)代码class Solution {public: void setZeroes(vector<vector<int>>& matrix) { set<int> rows, cols; int m = matrix.size(), n =

2016-04-16 21:36:14 213

原创 leetcode 71. Simplify Path

题意 将linux下的路径名转换成一个与路径等价但最短的路径名题解 使用栈来记录普通路径名(遇到“.”则跳过;“..”则出栈一个普通路径名)代码class Solution {public: string simplifyPath(string path) { int len = path.length(); stack<string> dirs

2016-04-16 21:18:13 264

原创 leetcode 72. Edit Distance

参考:http://blog.csdn.net/feliciafay/article/details/17502919题意 求word1变成word2的最短编辑距离。(插入、删除、修改都记为一步操作)题解 使用动态规划解决。dp[i][j] 表示word1子串(0~i-1)变成word2子串(0~j-1)所需的最短编辑距离。 状态转移方程为: dp[i][j] = min(dp

2016-04-16 11:33:19 501

原创 leetcode 70. Climbing Stairs

题意 在每个台阶能走一步或两步,问到达第n个台阶能有多少种方式。题解 和斐波那契序列一样,递归式为f(n) = f(n - 1) + f(n - 2),使用动态规划从底向上求解。代码class Solution {public: int climbStairs(int n) { int dp[n + 1]; dp[0] = dp[1] = 1;

2016-04-16 09:54:55 194

原创 leetcode 69. Sqrt(x)

题意 实现一个求整数平方根的函数,返回一个整数题解 从0遍历到x/2+1会超时,使用二分查找。代码“`c++ class Solution { public: int mySqrt(int x) { typedef long long LL; if(x == 0 || x == 1) return x;

2016-04-16 09:47:10 185

原创 leetcode 67. Add Binary

题意 两个字符串存放一个整数的二进制位,返回相加后的数的字符串表示题解 如题代码class Solution {public: string addBinary(string a, string b) { string result; //int minsize = min(a.length(), b.length()); int

2016-04-15 21:08:35 274

原创 leetcode 66. Plus One

题意 在数组中存放一个整数的各个位,然后这个整数加1后返回新的整数数组。题解 每个位都为9时需要增加一个空间。代码class Solution {public: vector<int> plusOne(vector<int>& digits) { int size = digits.size(); int carry = 1; b

2016-04-15 20:45:26 205

原创 leetcode 64. Minimum Path Sum

题意 在一个矩阵中只能向右和向下走,问从起点到终点的路径上的数之和的最小值为多少题解 使用动态规划。一个结点的最短路径和 = 它上边的结点和左边的结点中和较小的值 + 当前结点的值 dp[i][j] = min(dp[i - 1][j], dp[i][j - 1]) + grid[i][j];代码class Solution {public: int minPathSum

2016-04-15 20:28:41 211

原创 leetcode 63. Unique Paths II

题意 在一个矩阵中只能向右和向下走且不能走有障碍的点,问从起点到终点有多少种走法题解 使用动态规划。 dp[i][j] = 0; (obstacleGrid[i][j] == 1) dp[i][j] = dp[i - 1][j] + dp[i][j - 1];代码class Solution {public: int uniquePathsWithObstacl

2016-04-15 20:03:37 210

原创 leetcode 62. Unique Paths

题意 在一个矩阵中只能向右和向下走,问从起点到终点有多少种走法题解 使用动态规划。以点(i,j)为终点的路径数 =(i - 1,j)为终点的路径数 + (i,j - 1)为终点的路径数。代码class Solution {public: int uniquePaths(int m, int n) { int dp[m][n]; dp[0][0]

2016-04-15 19:37:16 172

原创 leetcode 61. Rotate List

题意 旋转链表题解 k可能大于链表节点个数n,由于没旋转n次又回到原链表,所以最终只需要旋转k%n次。代码“`c++ class Solution { public: ListNode* rotateRight(ListNode* head, int k) { if(head == NULL) return NULL;

2016-04-15 09:15:55 224

原创 leetcode 59. Spiral Matrix II

题意 输出旋转矩阵题解 和54题类似,通过不断缩小矩阵边界来解决。由于此时是n阶方阵,所以此时左上角和右下角其实可以用(x,x)和(n,n)表示。代码class Solution {public: vector<vector<int>> generateMatrix(int n) { int x = 0, y = 0; vector<vector

2016-04-10 11:11:21 202

原创 leetcode 58. Length of Last Word

题意 求字符串中最后一个单词的长度。题解 注意跳过尾部的空格。代码class Solution {public: int lengthOfLastWord(string s) { int i = s.length() - 1; while(i >= 0 && s[i] == ' ') i--; int end

2016-04-09 19:43:10 182

原创 leetcode 55. Jump Game

题意 每个坐标都有最大跳跃距离,可以跳到此区间[当前下标,当前下标+最大距离]的任意一点,问起点0开始能否跳到最后一点题解 1、开始使用了dp,从后往前记录下可以跳到最后的下标的每一个点,超时 2、使用贪心算法,从前往后走,若第i点能走到最大距离longest,则说明i和longest之间的点(i+1,i+2…)都能走到。代码dp超时class Solution {public:

2016-04-08 22:07:00 208

原创 leetcode 54. Spiral Matrix

题意 顺时针输出矩阵元素到一个一维向量中题解 x,y记录矩阵最左上角坐标,n、m记录最右下角坐标,不断缩小矩阵代码class Solution {public: vector<int> spiralOrder(vector<vector<int>>& matrix) { vector<int> result; if(matrix.empty())

2016-04-08 17:25:35 170

原创 leetcode 53. Maximum Subarray

题意 求连续子数组的最大和题解 使用动态规划求解。dp[i] = max(dp[i-1] + dp[i], dp[i]);代码class Solution {public: int maxSubArray(vector<int>& nums) { int len = nums.size(); int temp = 0; vecto

2016-04-08 16:46:59 154

原创 leetcode 52. N-Queens II

题意 N皇后问题题解 使用dfs。代码class Solution {public: int result; bool isOK(vector<int> cols, int pos) { for(int i = 0; i < pos; i++) { if(cols[i] == cols[pos] || ab

2016-04-07 21:19:04 307

原创 leetcode 51. N-Queens

题意 N皇后问题,所有点都不在同一行、同一列、同一对角线题解 使用穷举法(dfs),时间复杂度为O(n^n)。 * 由于每个点都不在同一行,所以可以用一维数组的下标表示不同行,数组中的值表示节点的列。 * 判断对角线:abs(cols[i] - cols[pos]) == abs(i - pos)代码class Solution {public: vector<ve

2016-04-06 22:01:36 447

原创 Leetcode 50. Pow(x, n)

题意 求幂题解 根据幂的二进制位是否为1来不断相乘。代码class Solution {public: double myPow(double x, int n) { bool isNeg = false; if(n < 0){ isNeg = true; n = -n; }

2016-04-01 18:15:24 200

原创 Leetcode 49. Group Anagrams

题意 将相同字母组成的字符串组成一组题解 对每个字符串排序后在map中查找是否有相同的代码class Solution {public: vector<vector<string> > groupAnagrams(vector<string>& strs) { vector<vector<string> > result; int index =

2016-03-30 21:50:31 248

原创 Leetcode 48. Rotate Image

题意 将数组顺时针旋转90度题解 将结果保存在一个临时数组中,旋转对应关系为:temp[j][m - 1 - i] = matrix[i][j];代码“`c++ class Solution { public: void rotate(vector

2016-03-30 21:28:53 186

原创 Leetcode 47. Permutations II

题意 生成一个数组的全排列,去除重复的排列数组题解 用递归实现。每个位置的数字都能和它后面的所有数字交换的,一共有n!种。用set去重超时,需要在递归中剪枝。如果交换中两个数的中间有一个数和后面的交换数相同(说明已经生成过此种排列),则停止生成此种排列。代码class Solution {public: vector<vector<int> > result; bool

2016-03-28 21:46:07 953

原创 Leetcode 46. Permutations

题意 生成一个数组的全派别题解 用递归实现。每个位置的数字都能和它后面的所有数字交换的,一共有n!种。代码class Solution {public: vector<vector<int> > result; void gen_permutation(int pos, vector<int> &nums) { if(pos == nums.si

2016-03-28 21:25:48 180

原创 Leetcode 43. Multiply StringsI

题意 用数字字符串模拟乘法。题解 如题代码class Solution {public: string mulStr(int digit, string num) { string result; int carry = 0; for (int i = num.length() - 1; i >= 0; i--)

2016-03-27 17:41:58 227

原创 Leetcode 40. Combination Sum II

题意 在候选集合C中选择数字(0个或1个),使它们的和为T。题解 使用深度优先搜索。代码class Solution {public: set<vector<int> > result; vector<int> temp; vector<vector<int>> combinationSum2(vector<int>& candidates, int targe

2016-03-26 21:23:24 234

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关注的人

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