代码编织梦想

代码随想录算法训练营day13| 239. 滑动窗口最大值 347. 前 k 个高频元素-爱代码爱编程

239. 滑动窗口最大值 暴力+剪枝 遍历数组,每个滑动区间计算最大值,当推出的元素不是最大值时无需计算 时间复杂度O(n2)            空间复杂度O(n) func maxSlidingWindow(nums []int, k int) []int { maxVal := nums[0] maxCount := 1 result

算法训练day07 | 454. 四数相加 ii、383. 赎金信、15. 三数之和、18. 四数之和-爱代码爱编程

算法训练Day07 | 454. 四数相加 II、383. 赎金信、15. 三数之和、18. 四数之和 454. 四数相加 II383. 赎金信15. 三数之和18. 四数之和 我新建的个人博客

代码随想录算法训练营第十天 |150. 逆波兰表达式求值 、239. 滑动窗口最大值 、前 k 个高频元素-爱代码爱编程

150. 逆波兰表达式求值 from operator import add, sub, mul def div(x, y): # 使用整数除法的向零取整方式 return int(x / y) if x

代码随想录算法训练营第七天| ●454.四数相加ii ● 383. 赎金信 ● 15. 三数之和 ● 18. 四数之和 ● 总结-爱代码爱编程

代码随想录算法训练营第七天(补卡) 因为这几天在赶稿小论文,就每天系统的刷题,这个习惯不太好,要改正,一定要合理规划时间 代码随想录 454.四数相加II 给你四个整数数组 nums1、nums2、nums

day6-爱代码爱编程

一、四数相加 II 题目一:454. 四数相加 II 454. 四数相加 II 给你四个整数数组 nums1、nums2、nums3 和 nums4 ,数组长度都是 n ,请你计算有多少个元组 (i, j, k, l) 能满足: 0 <= i, j, k, l < nnums1[i] + nums2[j] + nums3[k] + nu

day9-爱代码爱编程

一、用队列实现栈 题目一:225. 用队列实现栈 225. 用队列实现栈 请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。 实现 MyStack 类: void push(int x) 将元素 x 压入栈顶。int pop() 移除并返回栈顶元素。int top() 返回

day11-爱代码爱编程

一、滑动窗口最大值 题目一:239. 滑动窗口最大值 239. 滑动窗口最大值 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大值 。 保持一个双端队列,其中存储的是数组元素的索引,并确保队列中的第一个元素始

day10-爱代码爱编程

一、有效的括号 题目一:20. 有效的括号  20. 有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型的左括号。 首先定义了一个哈希表 brackets 来存储

day5-爱代码爱编程

一、哈希表理论基础 判断一个元素是否存在在集合中,考虑哈希表 哈希表常见的三种结构: 数组set map 二、有效的字母异位词 题目一:242.有效的字母异位词 242. 有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互

代码随想录算法训练营day01 | 704.二分查找、27.移除元素-爱代码爱编程

 一、LeeCode 704 二分查找 题目链接:704. 二分查找 文档讲解:来自代码随想录 视频讲解:卡子哥视频讲解系列——二分查找 1. 左闭右闭 class Solution { public: int search(vector<int>& nums, int target) {

第二十天| 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树-爱代码爱编程

Leetcode 654.最大二叉树 题目链接:654 最大二叉树 题干:给定一个不重复的整数数组nums。最大二叉树可以用下面的算法从nums递归地构建: 创建一个根节点,其值为nums中的最大值。递归地在最大值左边的子数组前缀上构建左子树。递归地在最大值右边的子数组后缀上构建右子树。 返回nums构建的最大二叉树。 思考一:递归

代码随想录算法训练营day08| 344.反转字符串 541. 反转字符串ii 替换数字 151.翻转字符串里的单词 右旋字符串-爱代码爱编程

 344.反转字符串 双指针 时间复杂度O(n)      空间复杂度O(1) func reverseString(s []byte) { // 双指针头尾遍历 left, right := 0, len(s)-1 // 双指针 for left < right{ s[left], s[right] = s[right], s[le

代码随想录算法训练营第八天 | ● 344.反转字符串 ● 541. 反转字符串ii ● 卡码网:54.替换数字 ● 151.翻转字符串里的单词 ● 卡码网:55.右旋转字符串-爱代码爱编程

代码随想录算法训练营第八天 代码随想录 344.反转字符串 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入

代码随想录算法训练营第四十五天丨卡码网:57. 爬楼梯、322. 零钱兑换、279. 完全平方数-爱代码爱编程

卡码网:57. 爬楼梯: 跟昨天第三题一样,求排列数,先2阶后1阶算是两种方法。 def Stairs(n, m): dp = [0] * (n + 1) dp[0] = 1 for j in range(1, n + 1): for i in range(1, m + 1): if j

代码随想录算法训练营第七天 | 344.反转字符串、541. 反转字符串ii、卡码网:54.替换数字、151.翻转字符串里的单词、卡码网:55.右旋转字符串-爱代码爱编程

代码随想录算法训练营第七天 | 344.反转字符串、541. 反转字符串II、卡码网:54.替换数字、151.翻转字符串里的单词、卡码网:55.右旋转字符串 文章目录 代码随想录算法训练营第七天 | 344.

代码随想录算法训练营第四十五天|kama57. 爬楼梯、322.零钱兑换、279.完全平方数-爱代码爱编程

确定dp数组(dp table)以及下标的含义 确定递推公式 dp数组如何初始化 确定遍历顺序 举例推导dp数组 kama57.爬楼梯 1阶,2阶,… m阶就是物品,楼顶就是背包。 每一阶可以重复使

代码随想录算法训练营第七天 |344.反转字符串、541. 反转字符串ii、卡码网:54.替换数字-爱代码爱编程

第四章 字符串part01 344.反转字符串 双指针 class Solution: def reverseString(self, s: List[str]) -> None: """

代码随想录算法训练营第七天 | ● 344.反转字符串● 541. 反转字符串ii● 卡码网:54.替换数字● 151.翻转字符串里的单词● 卡码网:55.右旋转字符串-爱代码爱编程

344.反转字符串 链接:. - 力扣(LeetCode) 细节: 1.temp赋的值 class Solution { public void reverseString(char[] s) { int left = 0; int right = s.length - 1; wh

【代码随想录算法训练营】【c语言版】第九天| 151.翻转字符串里的单词、卡码网:55.右旋转字符串-爱代码爱编程

151.翻转字符串里的单词 151. Reverse Words in a String 题目链接/文章讲解/视频讲解:https://programmercarl.com/0151.%E7%BF%BB%E8%BD%AC

代码随想录算法训练营第四十一天|卡码网46 携带研究材料、 leetcode416 分割等和子集-爱代码爱编程

46.携带研究材料 思路:0-1背包问题。确定dp数组及其下标的含义。dp[i][j]表示向空间大小为j的背包里放0~i个物品的最大价值。递推公式dp[i][j] = max(dp[i-1][j],dp[i-1][j-space[i]]+value[i]),有两种情况,不放i进背包,放i进背包,放i进背包的话,背包至少为i空余处space[i]的位置。初