自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(31)
  • 收藏
  • 关注

原创 替换空格

主要看C++中char *的用法吧

2017-07-20 16:40:55 248

原创 二维数组中的查找

Problem在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。Example124624788910119121315 \begin{matrix} 1 & 2 & 8 & 9 \\ 2 & 4 & 9 & 12 \\ 4

2017-07-20 15:50:06 248

原创 数组中重复的数字

Problem在长度为n的数组里的所有数字都在00~n−1n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。Solution Solution 1 使用一个相同长度的数组,做哈希表。 Solution 2 如果第i个数字不是i,那么和第numbers[i]个数字做比较,如果不一样,就交换位置i和位置numbers[i

2017-07-19 19:20:35 279

原创 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 337

原创 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 250

原创 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 296

原创 Win 7 U盘安装CentOS 7 双系统

进不去CentOS安装界面 进入CentOS安装界面后找不到本地硬盘 手动设置分区大小无效 安装配置时报错 基本安装过程是按照这篇博客来操作的。准备 8G及以上的U盘。 CentOS 7镜像文件,直接从官网下载。 UltraISO 安装 硬盘留出空闲分区首先进入 计算机-管理-磁盘管理,通过压缩逻辑分区可以得到可用空间,这里我留出了250G的空间。我在这里遇到了问题,win7里显示两种空闲分区:浅绿

2016-11-28 17:06:36 1680

原创 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 343

原创 LeetCode : Bulls and Cows

Solution 1// int to string string 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 208

原创 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 198

原创 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 253

原创 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 223

原创 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 197

原创 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 210

原创 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 208

原创 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 188

原创 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 334

原创 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 281

原创 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 202

原创 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 255

原创 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 227

原创 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 227

原创 一个模拟问题

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 298

原创 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 251

原创 LeetCode : Pascal's Triangle II

Pascal's Triangle

2016-09-26 16:44:00 250

原创 LeetCode : Pascal's Triangle

常规

2016-09-25 16:24:08 221

原创 LeetCode : Rotate Function

方程间递归关系

2016-09-25 16:03:17 281

原创 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 242

原创 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 200

原创 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 314

原创 UVA457

题目大意: 给定DNA序列和培养皿序列;某一时刻一个培养皿前后加自身的密度和为下一时刻该培养皿的密度序号;根据密度序号找到DNA序列中相应位置的数字,即下一时刻该培养皿的密度 总结点: memcpy(目的数组,原数组,字节数),主要是字节数,C++中int类型为4字节。输出格式最后不要多一行空行。 Accepted代码: #include #include //#define

2015-01-13 17:17:05 648

空空如也

空空如也

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

TA关注的人

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