![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
8.23第二周
文章平均质量分 50
zzh123353
越努力越幸运
展开
-
LeetCode 回文串问题
回文子串给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。题解1 中心扩展方法中心拓展,说白了,就是挨个遍历,只不过,中心可能是1个字符也可能是2个字符而已,不可能出现3个字符作为中心的情况,因为3个字符作为中心的话,他就是回文了,等于1个字符作为中心的情况.完整代码如下:class Solution {public: int countSubstrings(string s) {原创 2021-08-29 15:13:42 · 216 阅读 · 0 评论 -
LeetCode 对链表进行插入排序
题目 对链表进行插入排序3题解 插入排序链表的插入排序,重点在于记录前一个和后一个节点,链表之间的关系处理!/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {}原创 2021-08-29 14:14:15 · 87 阅读 · 0 评论 -
LeetCode链表排序
链表排序题解 归并排序原创 2021-08-29 13:40:00 · 89 阅读 · 0 评论 -
LeetCode最长连续序列
题目 最长连续序列题解 哈希表原创 2021-08-29 13:34:42 · 195 阅读 · 1 评论 -
LeetCode 矩形 地图分析 广度优先搜索
题目 矩形给定一个由 0 和 1 组成的矩阵 mat ,请输出一个大小相同的矩阵,其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。两个相邻元素间的距离为 1 。题解 广度优先搜索本题的本质就是寻找离1最近的0,那么就可以从0出发进行搜索,一开始利用一个队列把所有的0都压入队列,并把1的位置改为-1表示未访问过。如果遇到符合要求的:表示它为当前距离+1if(pos_x >=0 && pos_x < row && pos_y >=原创 2021-08-25 21:03:47 · 177 阅读 · 0 评论 -
LeetCode蓄水
题目 蓄水给定 N 个无限容量且初始均空的水缸,每个水缸配有一个水桶用来打水,第 i 个水缸配备的水桶容量记作 bucket[i]。小扣有以下两种操作:升级水桶:选择任意一个水桶,使其容量增加为 bucket[i]+1蓄水:将全部水桶接满水,倒入各自对应的水缸每个水缸对应最低蓄水量记作 vat[i],返回小扣至少需要多少次操作可以完成所有水缸蓄水要求。注意:实际蓄水量 达到或超过 最低蓄水量,即完成蓄水要求。问题描述:具体出处题解 枚举我们枚举「蓄水」的次数 k,那么对于容量为 v 的水缸原创 2021-08-25 17:11:23 · 311 阅读 · 0 评论 -
常用排序算法
文章目录前言冒泡排序介绍优化选择排序介绍优化插入排序希尔排序堆排序快速排序基数排序归并排序总结前言介绍几种常用的排序算法,自己写了部分代码冒泡排序介绍冒泡排序是比较基础的排序算法之一,其思想是相邻的元素两两比较,较大的数下沉,较小的数冒起来,这样一趟比较下来,最大(小)值就会排列在一端。整个过程如同气泡冒起,因此被称作冒泡排序。冒泡排序的步骤:、1>比较相邻的元素。如果第一个比第二个大,就交换他们两个。2>每趟从第一对相邻元素开始,对每一对相邻元素作同样的工作,直到最后一对。原创 2021-08-25 11:53:34 · 337 阅读 · 0 评论 -
LeetCode零钱兑换||与爬楼梯
题目 爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。题解 动态规划动态规划:建立一个dp容器,dp[i]表示到第i阶的方法数目,分为两种情况:如果这次选用跳一步:则dp[i] = dp[i - 1];如果这次选用跳两步:则dp[i] = dp[i - 2];所以:dp[i] = dp[i - 1] + dp[i - 2];加上边界条件:dp[1] = 1; dp[2] = 2;完整原创 2021-08-24 11:37:47 · 108 阅读 · 0 评论 -
LeetCode零钱兑换
零钱兑换给你一个整数数组 coins ,表示不同面额的硬币;以及一个整数 amount ,表示总金额。计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额,返回 -1 。你可以认为每种硬币的数量是无限的。题解 动态规划定义一个一维容器dp含义:dp[i]表示兑换i元钱最少需要的硬币数目,初始化为-1表示不可到达,边界条件dp[0] = 0;转移条件:当i - coins[j] >= 0 && dp[i - coins[j]] >=原创 2021-08-24 10:54:24 · 83 阅读 · 0 评论 -
LeetCode 最长公共子序列
题目 最长公共子序列给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。如果不存在 公共子序列 ,返回 0 。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,"ace" 是 “abcde” 的子序列,但 "aec" 不是 "abcde" 的子序列。两个字符串的 公共子序列 是这两个字符串所共同拥有的子序列。题解 动态规划最长公共子序列问题是典型的二维动态规划原创 2021-08-24 10:08:18 · 87 阅读 · 0 评论 -
LeetCode最长递增子序列
题目 最长递增子序列给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。题解| 动态规划假如考虑dp[i]这个元素,以第 ii 个数字结尾的最长上升子序列的长度,注意nums[i] 必须被选取。状态转移方程:dp[i] = max(dp[j] + 1, dp[i]); (j < i)class Solution {pu原创 2021-08-23 19:25:23 · 250 阅读 · 0 评论