- 博客(31)
- 收藏
- 关注
原创 二维数组中的查找
Problem在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。Example124624788910119121315 \begin{matrix} 1 & 2 & 8 & 9 \\ 2 & 4 & 9 & 12 \\ 4
2017-07-20 15:50:06 262
原创 数组中重复的数字
Problem在长度为n的数组里的所有数字都在00~n−1n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。SolutionSolution 1 使用一个相同长度的数组,做哈希表。Solution 2 如果第i个数字不是i,那么和第numbers[i]个数字做比较,如果不一样,就交换位置i和位置numbers[i
2017-07-19 19:20:35 290
原创 LeetCode : Find All Numbers Disappeared in an Array
给定一个长度为nn的数组,数组内整数范围为[1,n][1,n],元素允许重复,要求找[1,n][1,n]中出没有出现给给定数组中的元素,且不使用更多空间,时间复杂度O(n)O(n)。思路数组中的每个元素都表示一个数组中的位置,遍历第一遍数组:将每个元素对应位置的数值标记为负;遍历第二遍数组:元素为正的位置编号是没有出现的元素。Solutionvector<int> findDisappearedNu
2016-12-21 18:30:27 352
原创 LeetCode : Top K Frequent Elements
Solution - O(n)vector<int> topKFrequent(vector<int>& nums, int k){ // 统计每个数字的频率 unordered_map<int, int> rec; for(int i = 0; i < nums.size(); i++) rec[nums[i]]++; // 按频率存放数字
2016-12-02 15:02:00 261
原创 LeetCode : Sort Characters By Frequency
Solution 1 - O(nlogn)先把字符串排序,再统计次数。string frequencySort(string s){ if (s.length() < 3) return s; sort(s.begin(), s.end()); // 把s中的字符排序,相同的字符放在一起 vector<string> rec(s.length());
2016-12-01 17:22:47 308
原创 Win 7 U盘安装CentOS 7 双系统
进不去CentOS安装界面进入CentOS安装界面后找不到本地硬盘手动设置分区大小无效安装配置时报错基本安装过程是按照这篇博客来操作的。准备8G及以上的U盘。CentOS 7镜像文件,直接从官网下载。UltraISO安装硬盘留出空闲分区首先进入 计算机-管理-磁盘管理,通过压缩逻辑分区可以得到可用空间,这里我留出了250G的空间。我在这里遇到了问题,win7里显示两种空闲分区:浅绿
2016-11-28 17:06:36 1695
原创 LeetCode : Longest Palindrome
Solution 1 使用mapint longestPalindrome(string s){ int cnt = 0; map<char, int> m; for(int i = 0; i < s.length(); i++) { if(m.find(s[i]) == m.end()) { m[s[i]] =
2016-11-02 10:01:32 353
原创 LeetCode : Bulls and Cows
Solution 1// int to stringstring int2string(int num){ stringstream ss; ss << num; return ss.str();}string getHint(string secret, string guess){ int bullCnt = 0, cowCnt = 0, cnt = 0;
2016-10-26 20:59:08 217
原创 LeetCode : Word Pattern
pattern和substr的对应应该是双向的,因此设置双向的比较。Solutionbool wordPattern(string pattern, string str){ map<char, string> m; map<string, char> p; int begin = 0, end = 0; int index = 0; string token
2016-10-26 19:48:01 213
原创 LeetCode : Intersection of Two Arrays II
第一种方法是把数组放在map中进行比较。 第二种方法是将数组排好序后一次比较。Solution 1vector<int> Solution::intersect(vector<int>& nums1, vector<int>& nums2){ vector<int> result; map<int, int> m; for(int i = 0; i < nums1.size
2016-10-18 18:53:39 269
原创 Leetcode : Maximum Product Subarray
第一种特别麻烦的解法:先把数组按照0划分成一段一段的,然后根据每段负数值的个数,来求每段的最大乘积。int maxProduct(vector<int>& nums){ vector<int> minusRec; vector<int> zeroRec(1, -1); vector<int> prodRec; // 每段的乘积 int res = nums[0];
2016-10-17 14:19:50 232
原创 LeetCode : Find Minimum in Rotated Sorted Array
使用二分查找。int findMin(vector<int>& nums){ int begin = 0, end = nums.size() - 1; while(begin < end) { int mid = (begin + end) / 2; if(mid == begin) // 只剩两个数的时候 retur
2016-10-01 19:49:42 208
原创 LeetCode : Find Peak Element
要求log2nlog_2n的复杂度首先考虑二分法。int findPeakElement(vector<int>& nums){ if(nums.size() == 1) return nums[0]; int begin = 0, end = nums.size() - 1; while(begin < end) { if(end -
2016-10-01 17:29:22 224
原创 LeetCode : Minimum Path Sum
int Solution::minPathSum(vector<vector<int>>& grid){ if(grid.size() == 0 || grid[0].size() == 0) return 0; for(int i = 1; i < grid.size(); i++) grid[i][0] += grid[i - 1][0];
2016-10-01 16:35:46 221
原创 LeetCode : Merge Sorted Array
主要是要注意m和n的含义。m和n表示排好序的部分的长度。void merge(vector<int>& nums1, int m, vector<int>& nums2, int n){ // 两个数组倒着比,从后往前填充 int i = m - 1, j = n - 1; int index = m + n - 1; while(i >= 0 && j >= 0)
2016-10-01 16:12:27 201
原创 LeetCode : Contains Duplicate II
直接用遍历会超时,所以要先排序,连同初始index一起排序。bool containsNearDuplicate(vector<int>& nums, int k){ if(nums.size() < 2) return false; vector<int> index; for(int i = 0; i < nums.size(); i++)
2016-10-01 15:54:02 347
原创 LeetCode : Contain Duplicate
bool containsDuplicate(vector<int>& nums){ set<int> copy(nums.begin(), nums.end()); if(copy.size() != nums.size()) return true; return false;}
2016-10-01 15:52:08 298
原创 LeetCode : Best Time to Buy and Sell Stock
一串数字根据大小看成高低起伏的序列。用后面的峰值减去前面的谷值可以得到最大差值。int Solution::maxProfit(vector<int>& prices){ if(prices.size() < 2) return 0; int min_index = 0, max_index = 0; int min = prices[0]; int
2016-09-30 17:18:43 213
原创 LeetCode : MoveZeroes
void moveZeroes(vector<int>& nums){ int cnt = 0; for(int i = 0; i < nums.size(); i++) { if(nums[i] != 0) { nums[cnt] = nums[i]; cnt++; }
2016-09-30 16:42:21 272
原创 LeetCode : Plus One
vector<int> plusOne(vector<int>& digits){ int d = 1; for(int i = digits.size() - 1; i >= 0; i--) { int sum = digits[i] + d; digits[i] = sum % 10; d = sum / 10;
2016-09-29 20:51:45 243
原创 LeetCode : Majority Element
思路1数组经过快速排序,返回数组中间的值。超时。(直接使用sort函数会通过,而且比哈希表快)void myQuickSort(vector<int>& nums, int begin, int end){ if(begin < end) { int l = begin, r = end; int flag = nums[l]; whi
2016-09-29 20:50:23 242
原创 一个模拟问题
ProblemJesse is building his own operating system and now faces the task of building the process scheduling and the memory management feature. He has laid down the rules of how he is going to do it. It
2016-09-29 19:19:03 310
原创 LeetCode : Remove Duplicates from Sorted Array
常规方法是使用双指针。int removeDuplicates(vector<int>& nums){ if(nums.size() < 2) return nums.size(); int left = 1; while(left < nums.size()) { if(nums[left] == nums[left - 1])
2016-09-27 19:00:03 267
原创 LeetCode : Rotate Array
主要是C++ 11中Vector的一些用法.void rotate(vector<int>& nums, int k){ int len = nums.size(); k = k % len; //取余 if(k == 0) return; vector<int> rec(nums.end() - k, nums.end()); nums.in
2016-09-24 20:28:20 255
原创 LeetCode : Two Sum
第一种方法是直接双指针遍历。第二种方法是向哈希表中记录。vector<int> twoSum(vector<int>& nums, int target){ vector<int> res; map<int, int> rec; for(int i = 0; i < nums.size(); i++) { if(rec.find(nums[i]) !=
2016-09-24 19:40:54 213
原创 LeetCode : Single Number
第一种方法,用哈希表。map<int, int>ary;for (int i = 0; i < n; i++){ if (ary.find(A[i]) == ary.end()) ary.insert(pair<int, int>(A[i], i)); else ary.erase(A[i]);}map<int, int>::iterator
2015-03-16 10:47:09 329
原创 UVA457
题目大意:给定DNA序列和培养皿序列;某一时刻一个培养皿前后加自身的密度和为下一时刻该培养皿的密度序号;根据密度序号找到DNA序列中相应位置的数字,即下一时刻该培养皿的密度总结点:memcpy(目的数组,原数组,字节数),主要是字节数,C++中int类型为4字节。输出格式最后不要多一行空行。Accepted代码:#include #include //#define
2015-01-13 17:17:05 664
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人