随笔分类 -  代码随想录_随笔

跟着卡子哥学习算法,妈的一定要坚持下去!!
摘要:数组 一般是排序 以及 索引问题 左右指针问题: 一般是二分法相关,或者交换首尾元素 快慢指针问题: 844 退格字符串 滑动窗口问题: 76 最小覆盖字串 模拟过程问题: 螺旋矩阵 两种解法,一种统一四条边逻辑(但是要单独处理最后一圈,或者一条边),另一种不统一逻辑,方便直接一次循环搞定,考虑了所 阅读全文
posted @ 2024-09-19 14:35 周公瑾55 阅读(215) 评论(0) 推荐(0) 编辑
摘要:一、连通所有的节点所需的最短路径问题 1.1、Prim 算法 应用场景是主要是找到一个无向连通图的最小生成树,即连接所有节点且权重总和最小的树 // prim三部曲 // 1, 找到距离当前最小树最近节点 // 2,节点入树 // 3,更新mindist // 更新树 func updateMinD 阅读全文
posted @ 2024-09-10 11:27 周公瑾55 阅读(45) 评论(0) 推荐(0) 编辑
摘要:并查集 197 图中是否存在有效路径 var father []int func validPath(n int, edges [][]int, source int, destination int) bool { // 使用并查集算法,涉及到的操作,包括init,find, issample,j 阅读全文
posted @ 2024-09-09 13:56 周公瑾55 阅读(18) 评论(0) 推荐(0) 编辑
摘要:字符串接龙 var queue *list.List var visitMap map[string]bool func main() { var count int fmt.Scanf("%d", &count) var startStr, endStr string fmt.Scanf("%s 阅读全文
posted @ 2024-09-07 11:49 周公瑾55 阅读(6) 评论(0) 推荐(0) 编辑
摘要:岛屿最大的孤岛面积 package main import "fmt" var dirPath = [4][2]int{{0, -1}, {1, 0}, {0, 1}, {-1, 0}} var visited [][]bool var flag bool var res int func main 阅读全文
posted @ 2024-09-06 11:16 周公瑾55 阅读(9) 评论(0) 推荐(0) 编辑
摘要:图遍历 dfs 深度优先搜索 bfs 广度优先搜索 200 岛屿数量(dfs) var dirPath = [][]int{{0, -1}, {1, 0}, {0, 1}, {-1, 0}} // 上, 右, 下, 左 var visited [][]bool func numIslands(gri 阅读全文
posted @ 2024-09-05 13:55 周公瑾55 阅读(19) 评论(0) 推荐(0) 编辑
摘要:图论 基础定义 图的构造方式 1,邻接矩阵 矩阵位置array[i][j] = k, i表示节点i,j表示节点j,[i][j] 表示i-->j存在一条边,k表示的是边的权重 邻接矩阵的优点: 表达方式简单,易于理解 检查任意两个顶点间是否存在边的操作非常快 适合稠密图,在边数接近顶点数平方的图中,邻 阅读全文
posted @ 2024-09-04 13:04 周公瑾55 阅读(13) 评论(0) 推荐(0) 编辑
摘要:42、接雨水 func trap(height []int) int { // 双指针思路,按照列计算雨水高度,分别计算每一列左右高于当前高度的最高柱子高度,然后通过min(left, right) - height[i] 得出当前列的雨水体积 var res int var left, right 阅读全文
posted @ 2024-09-03 12:17 周公瑾55 阅读(31) 评论(0) 推荐(0) 编辑
摘要:739 每日温度 func dailyTemperatures(temperatures []int) []int { // 双指针 var res = make([]int, len(temperatures)) for i:=0; i<len(temperatures); i++ { for j 阅读全文
posted @ 2024-09-02 12:02 周公瑾55 阅读(8) 评论(0) 推荐(0) 编辑
摘要:647 回文字串 func countSubstrings(s string) int { // 动规五部曲 // dp[i][j] 表示s[i: j+1] 区间是否是一个回文 // if s[i] == s[j] {if i-j <= 1 || dp[i+1][j-1] == true { dp[ 阅读全文
posted @ 2024-08-31 10:45 周公瑾55 阅读(27) 评论(0) 推荐(0) 编辑
摘要:115 不同子序列 func numDistinct(s string, t string) int { // 动态规划,思考一下判断连续和不连续的区别,如果相等都是左上角+1, 如果不等,连续情况就是直接等于左上角,不连续情况直接归零 // dp[i][j] 表示s[i] 中存在 t[j] 结尾的 阅读全文
posted @ 2024-08-30 11:27 周公瑾55 阅读(16) 评论(0) 推荐(0) 编辑
摘要:1143 最长公共子序列 func longestCommonSubsequence(text1 string, text2 string) int { // 思路和判断最长公共数组一样 // dp[i][j] 表示以text1[i], text2[j]为结尾的最长公共子序列的长度 // if te 阅读全文
posted @ 2024-08-29 11:17 周公瑾55 阅读(9) 评论(0) 推荐(0) 编辑
摘要:300 最长递增子序列 var path []int var res int func lengthOfLIS(nums []int) int { // 尝试回溯思路 if len(nums) == 1 { return 1 } path = []int{} res = 0 backtracking 阅读全文
posted @ 2024-08-28 11:35 周公瑾55 阅读(13) 评论(0) 推荐(0) 编辑
摘要:188 买卖最佳实际IV(k次机会交易) func maxProfit(k int, prices []int) int { // 此题相比买卖两次条件改为买卖k次,所以dp数组行树需要增加为k*2 + 1 // dp[i][j]表示 if j%2 == 1 第i天第j/3次持有股票获得的收益, j 阅读全文
posted @ 2024-08-27 10:43 周公瑾55 阅读(7) 评论(0) 推荐(0) 编辑
摘要:121 买卖股票最佳时机 func maxProfit(prices []int) int { // dp五部曲 // 1 dp数组以及下标含义 dp[i][0] 表示第i天持有股票 dp[i][1] 表示第i天不持有 // 2 递推公式,dp[i][0] = max(dp[i-1][0], 0-p 阅读全文
posted @ 2024-08-26 11:04 周公瑾55 阅读(12) 评论(0) 推荐(0) 编辑
摘要:198 打家劫舍 func rob(nums []int) int { // 思路,动态规划 // dp[i] 代表前下标为i能装的最大盗窃物品价值 // 递推 dp[i] = max(dp[i-1], dp[i-2]+v(i)) // dp[i-1] 代表不偷物品i, dp[i-2]+v(i) 代 阅读全文
posted @ 2024-08-24 11:12 周公瑾55 阅读(8) 评论(0) 推荐(0) 编辑
摘要:322 零钱找还 func coinChange(coins []int, amount int) int { // 装满,并且硬币无限,可以类比完全背包问题 // dp[i][j] 表示前i个物品装满容量为j的背包所需要的最少物品数量 // 递推公式 dp[i][j] = min(dp[i-1][ 阅读全文
posted @ 2024-08-23 12:00 周公瑾55 阅读(7) 评论(0) 推荐(0) 编辑
摘要:0-1 背包问题 在 0-1 背包问题中,每种物品只能选择一次,因此一旦选择某个物品后,剩余的容量只能放入前面的物品。这就是为什么状态转移方程是: dp[i][j] = max(dp[i-1][j], dp[i-1][j-w(i)] + v(i)) 这里的 dp[i-1][j-w(i)] + v(i 阅读全文
posted @ 2024-08-22 11:25 周公瑾55 阅读(8) 评论(0) 推荐(0) 编辑
摘要:1049 最后一块石头重量|| func lastStoneWeightII(stones []int) int { // 本题思路在于要想得到最小差,就要尽可能将石头分割为两堆相近的重量,然后转换为背包问题 // dp[i] 表示容量i背包能装的石头总价值,其中重量和价值相等 // 递推公式 dp 阅读全文
posted @ 2024-08-21 11:50 周公瑾55 阅读(8) 评论(0) 推荐(0) 编辑
摘要:背包问题 有n件物品和一个最多能背重量为 w 的背包。第i件物品的重量是 weight[i],得到的价值是 value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 // pake // // @Description: // @param weights: 物品i对应重量 阅读全文
posted @ 2024-08-20 11:22 周公瑾55 阅读(8) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.
🚀
回顶
展开