![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
linjiet
笔记、分享
展开
-
leetcode(15)-3sum
class Solution {public: vector<vector<int>> threeSum(vector<int>& nums) { vector<vector<int>> result; sort(nums.begin(),nums.end()); if(...原创 2018-10-14 00:10:40 · 88 阅读 · 0 评论 -
leetcode(414)--Third Maximum Number
static const int _xxx = [](){ ios::sync_with_stdio(0); cin.tie(0); return 0;}();class Solution {public: int thirdMax(vector<int>& nums) { /* //错误解,只与最大值比较...原创 2018-11-14 11:02:51 · 87 阅读 · 0 评论 -
leetcode(448)--
class Solution {public: vector<int> findDisappearedNumbers(vector<int>& nums) { /* //解法1 vector<int> result; for(int i=0;i<nums.size();i+...原创 2018-11-14 16:09:36 · 283 阅读 · 0 评论 -
leetcode(485)--Max Consecutive Ones
class Solution {public: int findMaxConsecutiveOnes(vector<int>& nums) { int max=0; int cur=0; for(int i=0;i<nums.size();i++) { if(nums[i]...原创 2018-11-14 20:29:13 · 130 阅读 · 0 评论 -
leetcode(532)-- K-diff Pairs in an Array
class Solution {public: int findPairs(vector<int>& nums, int k) { if(k<0) return 0; //考虑k为0,不能去重 int result=0; sort(nums.begin(),nums.end...原创 2018-11-14 22:03:06 · 96 阅读 · 0 评论 -
删除k位数字使得最终的数字最小算法
题目描述给定一个非负整数 num,移除这个数中的 k 位数字,使得剩下的数字最小。 注意: num 的值小于 10^10000 且 ≥10^ k。 num 不会包含任何前导零。 示例 1 : 输入: num = 1432219, k = 3 输出: 1219 解释: 移除掉三个数字 4, 3, 和 2 形成一个新的最小的数字 1219。 示例 2 : 输入: num = 10200, k = ...原创 2018-11-24 00:25:44 · 3637 阅读 · 0 评论 -
leetcode(581)--Shortest Unsorted Continuous Subarray
class Solution {public: int findUnsortedSubarray(vector<int>& nums) { /* //方法1 vector<int> temp=nums; sort(nums.begin(),nums.end()); int l...原创 2018-11-24 23:22:09 · 96 阅读 · 0 评论 -
leetcode(628)--Maximum Product of Three Numbers
class Solution {public: int maximumProduct(vector<int>& nums) { /* //方法1 sort(nums.begin(),nums.end()); int size=nums.size(); int sum=nums[size-...原创 2018-11-26 21:25:57 · 129 阅读 · 0 评论 -
leetcode错误:reference binding to misaligned address
出现这种问题的原因就是数组访问越界。比如说将行下标对应的整型数作为列的下标索引对数组进行访问。原创 2018-11-27 22:47:14 · 28327 阅读 · 0 评论 -
leetcode(53)-Maximum Subarray动态规划算法的空间优化
题目Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.改进空间复杂度的动态规划代码class Solution {public: int maxSubArray(...原创 2019-09-12 22:58:11 · 165 阅读 · 0 评论 -
算法随笔(1)-找出区间中的素数个数
比较严谨的解释算法思想问题给定区间[M,N],找出区间中的素数个数。输入第一行为数据的组数C,以下C行中的每一行输入区间端点。切入点首先,你应该知道一个合数可以拆分为多个小于它的素数的乘积。而一个拆分后包含某一个素数的合数,一定可以通过这个素数和大于等于2的自然数相乘得到,同样这个素数和大于等于2的自然数相乘可以得到所有能够拆分得到这个素数的合数。证明也很简单,你只需要思考让合数除以这...原创 2019-09-13 00:28:10 · 1541 阅读 · 0 评论 -
leetcode(375)-Guess Number Higher or Lower II思考路线图
问题解释题目乍一看我是没有看懂的,遇到不太明白的题意或是不能一眼看出如何解决的题目,可以举几个具体的例子,尝试去找规律,这道题就是如此。当n=1时,花费最小应该为0;当n=2时,花费最小应该尝试取1;当n=3时,花费最小应该尝试取2;当n=4时,因为此时不能一眼看出来,我们就分类讨论,先取1、先取2、…,到这里细心的你一定发现了子问题的存在,例如取3,那么子问题就是去解决n=2。最后...原创 2019-09-14 18:49:18 · 173 阅读 · 0 评论 -
leetcode(464)-Can I Win
DP的两种解法,一种是递归记忆型,另一种是递推型,递推型又分为人人为我和我为人人型。题目简述给定一个两个数,分别是maxChoosableInteger、desiredTotal,有两个人,依次从1-maxChoosableInteger中取数,不放回,最后使得取出的数的和大于或等于desiredTotal的那个人是赢家,问是否第一个取数的人能赢。PS:每个人都是取数高手。题目理解通过...原创 2019-09-16 14:36:58 · 186 阅读 · 0 评论 -
算法随笔(2)-(面试题)求最长连续元素小于某个数
记录在猿辅导笔试时遇到的一道题目。问题给定一个正整型数组,要求找出最长的连续元素个数,且这些元素之和小于或等于给定的某个数s。例如:数组 5 1 1 1 2 7,给定最大5那么应返回4,即1 1 1 2。问题分析第一眼,就觉得是动态规划,可以设置一个数组nums,存储以每个元素作为结尾时最长的连续元素个数,且和不超过给定的数。设置一个value数组存储对应的元素和。这个思路没有...原创 2019-09-16 22:06:02 · 793 阅读 · 3 评论 -
牛客NOIP提高组-dfs算法系列(1)-乌龟跑步
此题是一道笔试题(忘记公司名字了),同时也是牛客网NOIP提高组的练习题。附上????:乌龟跑步算法分析(可略过)修改n次,修改前指令字符串长度为s。这道题不能使用普通动态规划的思想,即“仅仅保存前m个字符修改k次时的最远距离,前m+1个字符修改k次依赖于前m字符修改1-n次的最远距离,1<=m<=s-1,0<=k<=n”,举一个很简单的例子。给定操作序列“FT...原创 2019-09-23 22:33:09 · 276 阅读 · 0 评论 -
leetcode(561)--Array Partition I
class Solution {public: int arrayPairSum(vector<int>& nums) { /* //解法1,时间复杂度(O(nlogn)) int sum=0; sort(nums.begin(),nums.end()); for(int i=0;i&l...原创 2018-11-15 23:06:43 · 116 阅读 · 0 评论 -
leetcode(88)--Merge Sorted Array
class Solution {public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { if(nums2.size()==0) return; int newSize=m+n; m-...原创 2018-11-08 23:56:14 · 81 阅读 · 0 评论 -
leetcode(219)--Contains Duplicate II
class Solution {public: bool containsNearbyDuplicate(vector<int>& nums, int k) { /* if(nums.size()<=1||k<=0) return false; if(k>=nums.size(...原创 2018-11-12 00:10:22 · 137 阅读 · 0 评论 -
leetcode(35)--search insert position
class Solution {public: int searchInsert(vector<int>& nums, int target) { int low=0; int high=nums.size()-1; while(high>low) { int mid=(l...原创 2018-10-14 23:39:25 · 92 阅读 · 0 评论 -
leetcode(26)--Remove Duplicates from Sorted Array
自己写的:class Solution {public: int removeDuplicates(vector<int>& nums) { if(nums.size()==0) return 0; int curInsert=1; for(;curInsert<nums.size()...原创 2018-10-16 23:41:43 · 93 阅读 · 0 评论 -
leetcode(66)--Plus One
class Solution {public: vector<int> plusOne(vector<int>& digits) { vector<int> temp=vector<int>(); vector<int> result=vector<int>(); ...原创 2018-10-19 23:26:49 · 124 阅读 · 0 评论 -
leetcode(20)--Valid Parentheses
class Solution {public: bool isValid(string s) { int length=s.size(); if(length==0) return true; char* str=new char[length]; int curIndex=-1; ...原创 2018-10-20 23:13:40 · 89 阅读 · 0 评论 -
leetcode(119)--Pascal's Triangle II
class Solution {public: vector<int> getRow(int rowIndex) { int bef,aft; vector<int> newV=vector<int>(rowIndex+1); vector<int> v=vector<int>(...原创 2018-10-21 23:37:09 · 134 阅读 · 0 评论 -
leetcode(283)-- Move Zeroes
class Solution {public: void moveZeroes(vector<int>& nums) { int count=0; int curIndex=0; for(int i=0;i<nums.size();i++) { if(nums[i]!=0)...原创 2018-11-06 22:50:04 · 106 阅读 · 0 评论 -
leetcode(268)--Missing Number
class Solution {public: int missingNumber(vector<int>& nums) { int size=nums.size(); int sum=(size+0)*(size+1)/2; for(int i=0;i<size;i++) { ...原创 2018-11-09 22:41:29 · 85 阅读 · 0 评论 -
leetcode(118)--Pascal's Triangle
class Solution {public: vector<vector<int>> generate(int numRows) { if(numRows==0) return vector<vector<int>>(); vector<int> above(numRo...原创 2018-11-09 23:29:17 · 94 阅读 · 0 评论 -
leetcode(167)--Two Sum II - Input array is sorted
class Solution {public: vector<int> twoSum(vector<int>& numbers, int target) { int index1=0,index2=numbers.size()-1; while(index1<index2) { ...原创 2018-11-04 22:52:30 · 94 阅读 · 0 评论 -
leetcode(217)--Contains Duplicate
class Solution {public: bool containsDuplicate(vector<int>& nums) { unordered_set<int> s; for(auto i:nums) { if(s.count(i)==0) ...原创 2018-11-12 23:21:09 · 103 阅读 · 0 评论 -
leetcode(169)--Majority Element
class Solution {public: int majorityElement(vector<int>& nums) { int size=nums.size(); int cur=nums[0]; int num=1; for(int i=1;i<size;i++) {...原创 2018-11-10 22:56:45 · 119 阅读 · 0 评论 -
leetcode(27)--Remove Element
class Solution {public: int removeElement(vector<int>& nums, int val) { int cur=0; for(int i=0;i<nums.size();i++) { if(nums[i]!=val) ...原创 2018-11-07 22:30:17 · 104 阅读 · 0 评论 -
leetcode(121)--Best Time to Buy and Sell Stock
class Solution {public: int maxProfit(vector<int>& prices) { /* //v1 int maxProfit=0; int curMin=0; for(int i=1;i<prices.size();i++) ...原创 2018-11-07 22:54:33 · 93 阅读 · 0 评论 -
leetcode(189)--Rotate Array
class Solution {public: void rotate(vector<int>& nums, int k) { int size=nums.size(); k%=(size); nums.resize(size+k); for(int i=size+k-1;i>=k;i--) ...原创 2018-11-05 23:43:35 · 102 阅读 · 0 评论 -
cf(448c)-painting fence
这是一道面试题,同时是codeforces上的c类题目。tags:divide and conquer,dp,greedy解决思路首先明确先需要明确每次只可能存在两种刷法,要么横着一笔,要么竖着一笔。竖着刷不会存在“断开”的问题,而横着刷会存在。思考过程step1因为存在横向断开的问题,也就意味着可能需要分连续横向区间处理,那么首先应该想到用递归,每一层递归找到当前木材的最...原创 2019-09-27 23:47:00 · 447 阅读 · 1 评论