- 博客(53)
- 资源 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 [leetcode]总目录
53.最大子序和(Maximum Subarray)64.最小路径和(Minimum Path Sum)78.求数组子集(Subsets)120.实现三角形最小路径和(Triangle)121.买卖股票最佳时机(Best Time to Buy and Sell Stock)217.存在重复元素(Contains Duplicate)237.删除链表中的节点(Delete...
2019-05-28 15:29:53
118
原创 【Python】【入门】Python-基础
一、Python 标识符在 Python 里,标识符由字母、数字、下划线组成。所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头、标识符是区分大小写的。注意:以下划线开头的标识符是有特殊意义的。(1)以单下划线开头_foo的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用from xxx import *而导入。(2)以双下划线开头的__foo代表类的私有成员。(3)以双下划线开头和结尾的__foo__代表 Python 里特殊方法专用的标识,如...
2020-09-02 21:46:41
215
原创 [leetcode]416.C++实现 分割等和子集(Partition Equal Subset Sum)
1.题目描述2题目分析dp[i][j] = dp[i - 1][j] || dp[i - 1][j - nums[i]];3.代码实现class Solution {public: bool canPartition(vector<int>& nums) { bool res = false; int sum = 0; int m = ...
2019-06-29 09:23:48
328
原创 [leetcode]494.C++实现 目标和(Target Sum)
(一)题目描述(二)思想方法于是我们可以知道:target = sum(P) - sum(N); 那么sum(P) + sum(N) + sum(P) - sum(N) = sum(S) + target = 2sum(P); 那么sum(P) = [target + sum(S)] / 2;(三)代码实现class Solution {public: ...
2019-06-27 09:14:49
327
原创 [leetcode]740.C++实现 删除获得点(Delete and Earm)
(一)题目描述(二)思想方法dp[i] 表示轮到i时,现有的point ;num表示值为i的总和对于值为i的元素,要么抛弃它,要么选择它选择它以为着抛弃数i-1和i+1, dp[i] = 所有i的和 + dp[i+2]而抛弃它意味着dp[i] = dp[i+1](三)代码实现class Solution {public: int deleteAndE...
2019-06-27 09:08:11
178
原创 [leetcode]873.C++实现 最长的斐波那契子序列的长度(Length of Longest Fibonacci Subsequence)
(一)题目描述(二)思想方法动态规划:dp[j][i]=max(dp[j][i],dp[it->second][j]+1);斐波那契式的:n >= 3 对于所有i + 2 <= n,都有X_i + X_{i+1} = X_{i+2}(三)代码实现#include <set>class Solution {public...
2019-06-27 08:58:22
311
原创 [leetcode]718.C++实现 最长重复子数组(Maximum Length of Repeated Subarray)
(一)题目分析(二)思想方法动态规划:if(A[i-1]==B[j-1]) Dp[i][j] = Dp[i-1][j-1]+1; else Dp[i][j] = 0(三)代码实现class Solution {public: int findLength(vector<int>& A, vector<...
2019-06-24 09:28:48
163
原创 [leetcode]646.C++实现 最长数对链(Maximum Length of Pair Chain )
(一)题目描述(二)思想方法如果前面链对的末元素小于后链对的首元素,那么这两个链对就可以链起来,问最大能链多少个?首先把这些链对按照每个链对的末元素大小来进行排列。然后把排列后的第一个链对作为当前链对队列尾,遍历链对,找到第一个符合首元素大于位于当前队列尾的链对末元素的链对,然后更新当前链对队列尾以及队列链对个数。(三)代码实现class Solution {pu...
2019-06-24 09:10:36
218
原创 [leetcode]279.C++实现 完全平方(Perfect Squares)
(一)题目描述(二)思想方法利用动态规划思想解题,初始化dp数组令小于n的完全平方数为1,从1到n遍历求解最小组成个数,再对每个数遍历小于其的所有完全平方数,最小组成个数的状态转移方程为:dp[i] = min(dp[i], dp[i - j * j] + 1)(三)代码实现class Solution {public: int numSquares(int...
2019-06-22 19:05:43
462
原创 [leetcode]322.C++实现 零钱兑换(Coin Change)
(一)题目描述(二)思想方法动态规划:coins = [1,2,5],amount = 11则所需硬币数ans[11] = min(ans[11-1], ans[11-2], ans[11-5]);(三)代码实现class Solution {public: int coinChange(vector<int>& coins, int...
2019-06-22 19:05:15
898
原创 [leetcode]343.C++实现 整数拆分(Integer Break)
(一)题目描述(二)思想方法将数字拆分成2和3的乘积,因为 2*3 > 1*5; 3*3 > 1*6; 3*2*2 > 1*7; 2*2*2*2 > 1*8 .......所以拆分成2和3后,就能得到最大的乘积。(三)代码实现class Solution {public: int integerBreak(int n) { ...
2019-06-20 11:21:36
432
原创 [leetcode]413.C++实现 等差数列划分(Arithmetic Slices)
(一)题目描述(二)思想方法题目理解:(1)输入数组不一定是等差数组(2)P+1<Q,说明数组至少包含三个元素,(3)等差子数组按原数组顺序方法:{1,2,3} {1,2,3} ...
2019-06-19 17:41:19
447
原创 [leetcode]647.C++实现 回文子串(Palindromic Substrings)
(一)题目描述(二)思想方法(三)代码实现class Solution {public: int countSubstrings(string s) { int res = 0; int n = s.length(); for( int i = 0 ; i < n ; i ++ ){ ...
2019-06-18 20:04:09
396
原创 [leetcode]53.C++实现 最大子序和(Maximum Subarray)
(一)题目描述(二)思想方法动态规划: dp[i] = max{num[i],dp[i-1] + num[i]}(三)代码实现class Solution {public: int maxSubArray(vector<int>& nums) { int l = nums.size(); i...
2019-06-18 14:35:08
135
原创 [leetcode]338.C++实现 比特位计数(Counting Bits)
(一)题目描述(二)思想方法(1):0 1 10 1 1 2 10 1 12 1 2 2 3 1每遇到一个2的次幂,就从之前的数组中下标为1的开始加1。(2):动态规划(三)代码实现class Solution {public: vector<int> countBits(int num) { ...
2019-06-17 09:53:15
377
原创 [leetcode]64.C++实现最小路径和(Minimum Path Sum)
(一)题目描述(二)思想方法动态规划:从原点到达(i, j)的最小路径等于 :原点到达(i-1, j)最小路径与到达(i, j-1)最小路径中的最小值。dp[i]=grid[i][j]+min{dp[i-1],dp[i]};(三)代码实现class Solution {public: int minPathSum(vector<vector<...
2019-06-16 09:13:25
220
转载 120.[leetcode]C++实现三角形最小路径和(Triangle)
(一)题目描述(二)思想方法https://blog.csdn.net/qq874455953/article/details/82806030(三)代码实现class Solution {public: int minimumTotal(vector<vector<int>>& triangle) { vect...
2019-06-16 09:05:42
243
原创 877.[leetcode]C++实现石子游戏(Stone Game)
(一)题目描述(二)思想方法动态规划:dp[i][j]=max(piles[i]-dp[i+1][j],piles[j]-dp[i][j-1])dp[ i ][ j ] 表示从 i ~ j 中取二人的差;两重循环是从小到大的构造;d是子数组的长度(三)代码实现class Solution {public: bool stoneGame(vector<...
2019-06-13 16:34:47
711
原创 121.[leetcode]C++实现买卖股票最佳时机(Best Time to Buy and Sell Stock)
(一)题目描述(二)思想方法遍历数组,如果有小的就从后面找大的减去。(三)代码实现class Solution {public: int maxProfit(vector<int>& prices) { int pricesSize=prices.size(); if(pricesSize<=0) ...
2019-06-12 17:08:25
124
原创 746.[leetcode] C++实现爬楼梯最小花费(Min Cost Climbing Stairs)
(一)题目描述(二)思想方法动态规划,如果你想爬上第i个台阶,你只能从第i-1,或者i-2爬上来,所以dp[i]=min{dp[i-1]+cost[i-1],dp[i-2]+cost[i-2]}(三)代码实现class Solution {public: int minCostClimbingStairs(vector<int>&...
2019-06-11 16:22:53
291
原创 198.[leetcode]C++实现打家劫舍(House Robber )
1,题目描述2,题目分析动态规划,dp[i] =max{dp[i-1],dp[i-2]+nums[i]}3,代码实现class Solution {public: int rob(vector<int>& nums) { if(nums.size()==0) return 0; if(n...
2019-06-11 09:12:48
492
原创 485.[leetcode]C++实现最大连续1的个数(Max Consecutive Ones)
1,题目描述2,代码实现int findMaxConsecutiveOnes(vector<int>& nums) { int count=0,res=0; for(int i=0;i<nums.size();++i){ if(nums[i]==1) ++count; else{ ...
2019-06-10 09:13:49
278
原创 561.[leetcode]C++实现数组拆分1(Array Partition I)
(一)题目描述(二)思想方法让相近的数在一起取最小值,才能使最终的和最大。(三)代码实现class Solution {public: int arrayPairSum(vector<int>& nums) { int sum = 0; sort(nums.begin(), nums.end()); for (int i...
2019-06-06 20:14:38
786
原创 905.[leetcode]C++实现按奇偶排序数组(Sort Array By Parity)
(一)题目描述(二)思想方法设置两个指针,一个指向数组起始位置low=0;一个指向数组末尾high=A的大小减一。若数组low位置的数是偶数则low++,直到遇到奇数,high类似,若high的位置为奇数,则high--,直到遇到偶数,若此时low<high,则他俩交换。直到low不小于high。(三)代码实现class Solution {public: ...
2019-06-06 20:03:01
576
原创 509.[leetcode]C++实现斐波纳契数(Fibonacci Number)
(一)题目描述(二)思想方法1.首先想到的是迭代法,f(n)=f(n-1)+f(n-2)但是有重复计算.2.for循环记录上一次的f(n-2)(三)代码实现//第一种int Solution::fib(int N){if (N == 0) return 0; if (N == 1) return 1; else { return fib(N - 1...
2019-06-06 19:17:29
186
原创 1051[leetcode]C++实现Height Checker
(一)题目描述(二)思想方法先复制数组再排序,最后找不同。(三)代码实现class Solution {public: int heightChecker(vector<int>& heights) { vector<int> temp=heights; sort(heights.begin(), heights.e...
2019-06-05 20:23:36
145
原创 78[leetcode]求数组子集(Subsets)
(一)题目描述(二)思想方法遍历数组,一个一个的添加,每一次循环在以前基础上添加本次循环的数,以此类推。比如对于题目中给的例子 [1,2,3] 来说,最开始是空集,那么我们现在要处理1,就在空集上加1,为 [1],现在我们有两个自己 [] 和 [1],下面我们来处理2,我们在之前的子集基础上,每个都加个2,可以分别得到 [2],[1, 2],那么现在所有的子集合为 [], [1]...
2019-06-04 21:02:03
233
原创 977[leetcode]C++实现有序数组的平方(Squares of a Sorted Array)
(一)题目描述(二)思想方法先将数组负数取绝对值,再排序,平方。(三)代码实现class Solution {public: vector<int> sortedSquares(vector<int>& A) {int i = 0; while (i<A.size()&&A[i] < 0){ ...
2019-06-03 21:30:46
180
原创 238[leetcode]C++代码实现除自身以外数组的乘积(product of Array Except Self)
(一) 题目描述(二)思想方法每一个数都等于左边数的乘积*右边数的乘积。第一个数等于1*右边数的乘积,最后一个数等于 左边数的乘积*1。(三)代码实现class Solution {public: vector<int> productExceptSelf(vector<int>& nums) { vector<...
2019-06-03 21:10:04
210
原创 292.[leetcode]Nim 游戏(Nim Game)
(一)题目描述(二)思想方法为4的倍数时,永远不会赢得比赛。(三)代码实现class Solution {public: bool canWinNim(int n) { if (n % 4 == 0) { return false; } return true; }};...
2019-06-01 20:51:36
124
原创 217.[leetcode] 存在重复元素(Contains Duplicate)
(一)题目描述(二)思想方法先对数组排序,如果前一个和后一个相同则有重复元素。(三)算法实现class Solution {public: bool containsDuplicate(vector<int>& nums) { if (nums.size() < 2) { return false; }...
2019-05-31 20:54:54
102
原创 237[leetcode]删除链表中的节点(Delete Node in a Linked List)
(一)题目描述(二)思想方法将后一个节点的值赋给当前节点,删除后一个节点(三)代码实现/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NUL...
2019-05-30 17:43:52
144
原创 557[leetcode] C++实现反转字符串中的单词 III(557. Reverse Words in a String III)
(一)题目描述(二)思想方法遍历字符串,定义开始和结束位置,用来记录这个单词的位置,遇到空格或结束符将标记单词反转。(三)代码实现class Solution {public: string reverseWords(string s) { int start = 0, end = 0,restart; char temp; for (in...
2019-05-28 18:48:33
310
原创 344[leetcode]C代码实现 反转字符串(Reverse String)
(一)题目描述(二)思想方法定义两个下表指针low,high从数组两边交换。直到low大于high(三)代码实现class Solution {public: void reverseString(vector<char>& s) { int low = 0, high= s.size()-1; char temp; wh...
2019-05-28 15:26:28
564
原创 231.[leetcode]C++代码2的幂(Power of Two)
(一)题目描述(二)算法思想采用递归的思想,首先判断该数是否是2的倍数,不是返回false;如果是再看该数除以二以后的除数是否是2的倍数,逐层调用。(三)代码实现class Solution {public: bool isPowerOfTwo(int n) { if (n<1) { re...
2019-05-27 14:37:00
250
原创 [leetcode]Majority Element
(一)题目描述(二)思想方法首先使用map,将数组中不重复的数字作为主键,遍历数组,若数组中数字在map中存在,将键为该数字的值加一,不存在则插入map,该数字作为主键,其值为1,直到有数字的值大于N/2;结束。(三)代码实现class Solution {public: int majorityElement(vector<int>&am...
2019-05-26 13:40:21
93
原创 [leetcode]链表排序
(一)题目描述(二)思想方法:关于排序的方法有很多,但是符合O(nlogn)并适合链表的只有合并排序。归并排序(Merge)是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conque...
2019-05-25 21:52:42
4516
2
原创 [leetcode]Merge Two Sorted Lists合并两个有序链表2
1,题目描述2,代码实现/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {...
2019-05-25 07:33:19
104
原创 [leetcode]Merge Two Sorted Lists合并两个有序链表
目录1,题目描述2,代码实现1,题目描述中文2,代码实现/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }...
2019-05-25 07:20:14
103
原创 136.[leetcode] C代码实现 数字只出现一次(Single Number)
(一) 题目描述(二)思想先对数组排序,两个为一组比较,若不相等则返回前一个数。(三)代码实现public static int singleNumber(int[] nums) { Arrays.sort(nums); // 排序数组 for (int i = 0; i < nums.length - 1; i += 2) ...
2019-05-24 08:26:38
156
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人