LeetCode
conquer777
这个作者很懒,什么都没留下…
展开
-
Leetcode 买卖股票的时机II
题目给定一个数组 prices ,其中 prices[i] 是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。思路扫描一遍 只要后一天比前一天大 就把这两天的差值加一下代码class Solution {public: int maxProfit(vector<int>& prices) { int ans=原创 2022-01-13 19:46:24 · 118 阅读 · 0 评论 -
Leetcode 买股票的最好时机
题目给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0思路这道题也可以看成一道DP问题,假设在第i天卖出,那么我们只要找到前i天的最低价格,并在那时候买入就可以了,因此用dp[i]来表示前i天股票的最低价格,很显然有状态转移方程为dp[i]=min(dp[原创 2022-01-13 19:33:25 · 147 阅读 · 0 评论 -
最长上升子序列 输出路径
题目给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。代码class Solution {public: int lengthOfLIS(vector<int>& nums) { int N=nums.size(); vector<int>原创 2022-01-13 17:54:30 · 228 阅读 · 0 评论 -
Leetcode day11 相交链表
题目给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交:思路方法1:计算两两链表的长度差为k,让长的那个先走k步,再一起走,当两指针值相同时,就找到了相加的结点方法2:用unordered_set存储A中的结点,然后遍历B,看B中的结点是否存在A中方法3:利用两链表的长度和为定值** * Definition for singly-linked list. * s原创 2022-01-12 13:34:06 · 205 阅读 · 0 评论 -
Leetcode day9 全排列
题目:给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。思路dfs,当成模板题记住即可代码class Solution {public: bool st[10]; vector<int> path; void dfs(vector<vector<int>> &res,vector<int>& nums,int u,int n){ //n是数组长度,u是当前处原创 2022-01-12 09:52:23 · 71 阅读 · 0 评论 -
Leetcode day8 一次编辑+压缩字符串
题目字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。思路因为只能通过一次或者零次编辑,所以如果给定字符串的长度大于2的话,那么可以直接返回false;如果两字符串长度相等,那么肯定是通过替换得到的,两个字符串对应位置只能有一个不同的地方,遍历字符串统计对应位置不同的数目即可;如果两字符串长度 相差1,那么可以认为是短的字符串插入一个字符得到长的字符串,采用双指针法,如果两个字符串对应的位置的字符相同,两个指针都+原创 2022-01-08 11:09:05 · 210 阅读 · 0 评论 -
Leetcode day7 URL化
题目URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。思路双指针法,从后向前复制代码class Solution {public: string replaceSpaces(string S, int length) { int i=length-1; int j=S.size()-1; // cout<<j<<endl;原创 2022-01-07 21:11:14 · 3211 阅读 · 0 评论 -
Leetcode day6 分发饼干+分发糖果
题目假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子 i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干 j,都有一个尺寸 s[j] 。如果 s[j] >= g[i],我们可以将这个饼干 j 分配给孩子 i ,这个孩子会得到满足。你的目标是尽可能满足越多数量的孩子,并输出这个最大数值。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/assign-cookies原创 2022-01-06 09:54:48 · 383 阅读 · 0 评论 -
Leetcode day5
题目整数反转给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reverse-integer思路用一个slice来记录给定整数的每一位,然后再反着乘起来我的垃圾代码(空间复杂度O(n))func reverse(x int) int { i:=0 va原创 2022-01-05 21:39:48 · 177 阅读 · 0 评论 -
Leetcode 每日一题day4 回文数(水题)
题目给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。链接:https://leetcode-cn.com/problems/palindrome-number思路转成字符串,遍历对比即可代码import "strconv"func isPalindrome(x int) bool { s := strconv.Itoa(x) f原创 2022-01-04 22:32:38 · 365 阅读 · 0 评论 -
Leetcode每日一题 day3 无重复字符的最长子串
题目给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。思路因为ASCII有256个,因此开一个长度为256的数组来记录某一字符是否出现过。遍历字符串,用left和right两个下标来表示当前处理的区间。用滑动窗口的思想来解决,滑动窗口右边界不断右移,只要没有重复字符,就持续扩大窗口边界。一旦出现了重复字符, 就缩小左边界,直到重复的字符在左边界之外(注意:此时应将移出左边界的字符在数组中的值置为0,表示没有在当前处理的区间中出现过)。每次移动后都需要计算当前长度并更新。代码f原创 2022-01-03 10:42:09 · 237 阅读 · 0 评论 -
Leetcode 每日一题 day2 2022.1.2
题目两数相加链接:https://leetcode-cn.com/problems/add-two-numbers/给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。思路因为给的链表是倒序的,也就是低位再前,高位在后,而加法运算刚好是从低位开始相加,所以刚好可以从头遍历链表,将两个链表对应的值相加,用一个变量car原创 2022-01-02 11:19:34 · 88 阅读 · 0 评论 -
Leetcode 每日一题(Golang) 2022.1.1
题目给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/two-sum示例:代码:`func twoSum(nums []int, target int) []int {m:=make(ma原创 2022-01-01 23:23:47 · 174 阅读 · 0 评论