解数 随想录 随想 皇后

【代码随想录算法训练营第3天】704. 二分查找、27. 移除元素

Day1-数组2023.5.20 2023.9.14二刷 Leetcode704 二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。 初解 已经不记得二分查找了,遍历找\ ......
随想录 训练营 随想 算法 元素

代码随想录算法训练营-回溯算法|455. 分发饼干、376. 摆动序列

1.贪心算法一般分为如下四步: 将问题分解为若干个子问题 找出适合的贪心策略 求解每一个子问题的最优解 将局部最优解堆叠成全局最优解 455. 分发饼干 1. 局部最优就是大饼干喂给胃口大的,充分利用饼干尺寸喂饱一个,全局最优就是喂饱尽可能多的小孩。 时间复杂度:O(nlogn) 空间复杂度:O(1 ......
算法 随想录 训练营 序列 饼干

[代码随想录]Day46-动态规划part14

题目:1143. 最长公共子序列 思路: 主要就是两大情况: text1[i - 1] 与 text2[j - 1]相同,text1[i - 1] 与 text2[j - 1]不相同 如果text1[i - 1] 与 text2[j - 1]相同,那么找到了一个公共元素,所以dp[i][j] = d ......
随想录 随想 代码 动态 part

代码随想录算法训练营第九天

代码随想录算法训练营第九天 | LeetCode 232(用栈实现队列) LeetCode 225(用队列实现栈) 栈和队列理论基础 定义 栈(stack ),一种遵循先进后出(FILO—First-In/Last-Out)原则的线性存储结构。 队列(queue),一种遵循先进先出(FIFO—fir ......
随想录 训练营 九天 随想 算法

代码随想录算法训练营第10天| 232.用栈实现队列 ● 225. 用队列实现栈

栈和队列 232.用栈实现队列 stack: queue: 卡哥代码 一个入栈,一个出栈,即可模拟队列的pop操作 pop之前要检查出栈是否为空 若为空,则排出入栈里所有的元素至出栈中 class MyQueue { public: stack<int> stackIn; stack<int> st ......
队列 随想录 训练营 随想 算法

【代码随想录算法训练营第二天】977.有序数组的平方、209.长度最小的子数组 、59.螺旋矩阵II

Day2-数组2023.9.15 Leetcode977 有序数组的平方 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。 初解 我还是不能想到暴力解法之外的,对某个问题的最优复杂度也没有概念。就算提示我是用指针,我也想不到思路。 现 ......
数组 随想录 训练营 矩阵 螺旋

[代码随想录]Day45-动态规划part13

题目:300. 最长递增子序列 思路: dp[i]状态 取决于 dp[0] - dp[i-1]中小于dp[i]的元素中最大的值+1,即: for j:=0; j <i; j++ { if nums[i] > nums[j]{ dp[i] = max(dp[i], dp[j] + 1) } } 代码: ......
随想录 随想 代码 动态 part

代码随想录算法训练营第八天

代码随想录算法训练营第八天 | LeetCode 28(实现strStr()) LeetCode 459(重复的子字符串) 28:实现strStr() LeetCode 28(实现strStr()) class Solution { public int strStr(String haystack ......
随想录 训练营 随想 算法 代码

代码随想录算法训练营第9天| ●28. 实现 strStr() ●459.重复的子字符串 ●字符串总结 ●双指针回顾

28.找出字符串中第一个匹配项的下标 mydemo--(my thought)--(falied) class Solution { public: int strStr(string haystack, string needle) { for(int i=0; i<haystack.size() ......
字符串 字符 随想录 训练营 指针

代码随想录算法训练营第8天| ● 344.反转字符串 ● 541. 反转字符串II ● 剑指Offer 05.替换空格 ● 151.翻转字符串里的单词 ● 剑指Offer58-II.左旋转字符串

344.反转字符串 mydemo--(一次就过)--(成功) class Solution { public: void reverseString(vector<char>& s) { int len = s.size(); char tmp; int i=0; int j = len-1; wh ......
字符串 字符 随想录 左旋 Offer

[代码随想录]Day44-动态规划part12

题目:309. 买卖股票的最佳时机含冷冻期 思路: 具体可以区分出如下四个状态: 状态一:持有股票状态(今天买入股票,或者是之前就买入了股票然后没有操作,一直持有) 不持有股票状态,这里就有两种卖出股票状态 状态二:保持卖出股票的状态(两天前就卖出了股票,度过一天冷冻期。或者是前一天就是卖出股票状态 ......
随想录 随想 代码 动态 part

代码随想录算法训练营第七天

代码随想录算法训练营第七天 | LeetCode 344(反转字符串) LeetCode 541(反转字符串II) LeetCode 剑指05(替换空格) LeetCode 151(反转字符串中的单词) LeetCode 剑指58(II.左旋转字符串) 344:反转字符串 LeetCode 344( ......
随想录 训练营 随想 算法 代码

代码随想录算法训练营第7天| ● 454.四数相加II ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和

454.两数相加 Ⅱ mydemo--(超时失败) class Solution { public: int fourSumCount(vector<int>& nums1, vector<int>& nums2, vector<int>& nums3, vector<int>& nums4) { ......
之和 随想录 训练营 随想 算法

[代码随想录]Day43-动态规划part11

题目:123. 买卖股票的最佳时机 III 思路: 达到dp[i][1]状态,有两个具体操作: 操作一:第i天买入股票了,那么dp[i][1] = dp[i-1][0] - prices[i] 操作二:第i天没有操作,而是沿用前一天买入的状态,即:dp[i][1] = dp[i - 1][1] 那么 ......
随想录 随想 代码 动态 part

代码随想录算法训练营第六天

代码随想录算法训练营第六天 | LeetCode 454(四数相加II) LeetCode 383(赎金信) LeetCode 15(三数之和) LeetCode 18(四数之和) 454:四数相加II LeetCode 454(四数相加II) 思路: 首先定义 一个map,key放a和b两数之和, ......
随想录 训练营 随想 算法 代码

[代码随想录]Day42-动态规划part10

题目:121. 买卖股票的最佳时机 思路: 贪心做起来更简单;dp多此一举……状态0是有买入,状态1是 代码: func maxProfit(prices []int) int { lens := len(prices) if lens == 0 { return 0 } dp := make([] ......
随想录 随想 代码 动态 part

代码随想录算法训练营第五天

代码随想录算法训练营第五天 | LeetCode 242(有效的字母异位词) LeetCode 349(两个数组的交集) LeetCode 202(快乐数) LeetCode 1(两数之和) 242:有效的字母异位词 LeetCode 242(有效的字母异位词) class Solution { p ......
随想录 训练营 随想 算法 代码

代码随想录算法训练营第六天| 242.有效的字母异位词,349.两个数组的交集,202.快乐数,1.两数之和

242. 有效的字母异位词 mydemo--(成功)--(学了卡哥的思路) class Solution { public: bool isAnagram(string s, string t) { int alphabet = 26; int hash[alphabet]; for(int i=0 ......
随想录 之和 训练营 数组 交集

[代码随想录]Day41-动态规划part09

题目:198. 打家劫舍 思路: 决定dp[i]的因素就是第i房间偷还是不偷。 如果偷第i房间,那么dp[i] = dp[i - 2] + nums[i] ,即:第i-1房一定是不考虑的,找出 下标i-2(包括i-2)以内的房屋,最多可以偷窃的金额为dp[i-2] 加上第i房间偷到的钱。 如果不偷第 ......
随想录 随想 代码 动态 part

代码随想录算法训练营第四天

代码随想录算法训练营第四天 | LeetCode 24(两两交换链表中的节点) LeetCode 19(删除链表的倒数第N个节点) LeetCode 160(链表相交) LeetCode 142(环形链表II) 24:两两交换链表中的节点 LeetCode 24(两两交换链表中的节点) 思路: 这道 ......
随想录 训练营 随想 算法 代码

代码随想录算法训练营第四天| 24. 两两交换链表中的节点, 19.删除链表的倒数第N个结点,面试题02.07.链表相交,142.环形链表Ⅱ

24. 两两交换链表中的节点 mydemo(超时) /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullpt ......
随想录 结点 环形 训练营 节点

代码随想录算法训练营第三天

代码随想录算法训练营第三天 | LeetCode 203(移除链表元素) LeetCode 707(设计链表) LeetCode 206(反转链表) 203:移除链表元素 LeetCode 203(移除链表元素) 思路 遍历链表 等值删除 双指针 方法一:虚拟头节点 方法二:直接在原链表删除 方法一 ......
随想录 训练营 随想 算法 代码

代码随想录算法训练营第三天| 203.移除链表元素 707.设计链表 206.反转链表

203.移除链表元素 链表定义 struct ListNode { int val; ListNode* next; ListNode(): val(0), next(NULL) {}; ListNode(int x): val(x), next(NULL) {}; ListNode(int x, ......
随想录 训练营 随想 算法 元素

1213:八皇后问题

#include<iostream>#include<cstdio>#include<cstdlib>#include<cstring>#define N 100using namespace std;int a[N][N],b[N];int vis[N][N];int tot;int dir[4] ......
皇后 问题 1213

[代码随想录]Day40-动态规划part08

题目:139. 单词拆分 思路: 单词就是物品,字符串s就是背包,单词能否组成字符串s,就是问物品能不能把背包装满。 拆分时可以重复使用字典中的单词,说明就是一个完全背包! 动规五部曲分析如下: 确定dp数组以及下标的含义:dp[i] : 字符串长度为i的话,dp[i]为true,表示可以拆分为一个 ......
随想录 随想 代码 动态 part

代码随想录刷题记录——栈与队列篇

栈与队列理论基础 栈stack:先进后厨 队列queue:先进先出 STL(C++标准库) STL 栈和队列属于容器适配器(container adapter) 优先队列priority_queue: 默认大根堆,如果是pair<a,b>,默认比较a大小 如果需要比较b大小,且小根堆,可以如下实现 ......
随想录 队列 随想 代码

代码随想录算法训练营第二天| 977.有序数组的平方,209.长度最小的子数列,59.螺旋矩阵Ⅱ

## 977.有序数组的平方 双指针法 因为负数平方后也会变大,所以较大的平方值只可能在靠近两端的位置,越往中间走平方值必定越小。 > 所以,在原数组两端各定义一个指针,慢慢往中间走,然后把平方值按顺序放到新数组里即可。 ```c++ class Solution { public: vector ......
随想录 数列 训练营 数组 矩阵

[代码随想录]Day39-动态规划part07

## 题目:[70. 爬楼梯](https://leetcode.cn/problems/climbing-stairs/description/) ### 思路: 除了`dp[i] = dp[i-1] + dp[i-2]`还可以用完全背包的方法,可以放无数个1或者2,看有多少种排列(先背包后物品) ......
随想录 随想 代码 动态 part

代码随想录刷题记录——双指针篇

27. 移除元素 题目链接 快慢指针,最终返回index值为移除元素后的数组末尾元素下标+1. #include<vector> using namespace std; class Solution { public: int removeElement(vector<int>& nums, in ......
随想录 指针 随想 代码