算法
zgscsed
这个作者很懒,什么都没留下…
展开
-
常用的排序算法
常用的排序算法总结冒泡排序冒泡排序,每次遍历都把最大元素(也可以是最小元素)放到无序数组的最后面。冒泡排序是一个稳定的排序算法。时间复杂度计算:最优情况下,已经排好序了,只需双层循环,n*(n-1)/2 。是O( n^2 );最坏情况,元素是逆序,每次遍历都要3次交换, 3n*(n-1)/2。是O( n^2 );void bubbleSort(std::vector<int>& arr){ int len = arr.size(); for (int i = 0; i原创 2020-07-24 21:05:39 · 127 阅读 · 0 评论 -
leetcode题库124-- 二叉树中的最大路径和
给定一个非空二叉树,返回其最大路径和。本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。、思路:这道题,首先要正确理解题目意思。返回一个最大路径和,很容易想到用递归地方法,将子节点的路径和求出,加上自身就是该节点为根的路径和。题目的要求是从任意节点出发,而不是子树的根节点出发,因此要将左右子树的路径和都加上才符合题意。当然,计算中需要判断左右子树路径和加自身节点值是否变小(也就是子树路径小于1) int sum_max =INT_MIN;原创 2020-06-22 08:57:59 · 384 阅读 · 0 评论 -
leetcode题库221-- 最大正方形
在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4思路问题要找到最大全为1的正方形。p(i,j)点为右下角的正方形,计算全为1的正方形的边长。很明显与p(i-1, j), p(i-1, j-1), p(i, j-1)三个点有关。p(i,j) = 三个点中的最小值加1.。画个图更好理解。 int maximalSquare(vector<vecto原创 2020-05-08 17:36:52 · 132 阅读 · 0 评论 -
leetcode题库5-- 最长回文子串
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"思路动态规划: 主要是要状态转移方程P(i,j)=(P(i+1,j−1)&&S[i]==S[j]),其中由于p(i,j)之前要知道p(i+1...原创 2020-05-01 17:01:22 · 194 阅读 · 0 评论 -
leetcode题库6-- Z 字形变换
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:L C I RE T O E S I I GE D H N之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数:s...原创 2020-05-01 12:32:14 · 183 阅读 · 0 评论 -
leetcode题库522 --最长特殊序列 II
给定字符串列表,你需要从它们中找出最长的特殊序列。最长特殊序列定义如下:该序列为某字符串独有的最长子序列(即不能是其他字符串的子序列)。子序列可以通过删去字符串中的某些字符实现,但不能改变剩余字符的相对顺序。空序列为所有字符串的子序列,任何字符串为其自身的子序列。输入将是一个字符串列表,输出是最长特殊序列的长度。如果最长特殊序列不存在,返回 -1 。示例:输入: “aba”, “cdc”,...原创 2020-04-29 20:20:35 · 259 阅读 · 0 评论 -
leetcode题库11--盛最多水的容器
给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。int maxArea(vector<int>& height) { ...原创 2020-04-27 15:56:21 · 118 阅读 · 0 评论 -
leetcode题库1--两数之和
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]思路:遍历数组时,在前...原创 2020-04-27 15:22:37 · 145 阅读 · 0 评论 -
leetcode题库283-- 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。思路:使用两个数组,将原数组的不为0的数据依次保存在新的数组中。这里要求在原数组上操作,就用两个索引来表示两个数组。一个是遍历数组的索引 i, 一个...原创 2020-04-26 20:29:32 · 106 阅读 · 0 评论 -
动态规划
0-1背包问题简要说下动态规划:通常用来求解最优化问题,通过组合子问题的解来求得原问题的解。动态规划求解要有两个要素:最优子结构和子问题重叠。(暂时不太理解)使用背包问题 这里就是0-1背包问题。有一堆物品m,重量w,价值v,背包容量c。 递推式:1) j<w(i) V(i,j)=V(i-1,j) //i指i个物品,j是容量2) j>=w(i) ...原创 2018-09-04 22:06:11 · 121 阅读 · 0 评论 -
字符串
3. 无重复字符的最长子串给定一个字符串,找出不含有重复字符的 最长子串 的长度。示例:给定 “abcabcbb” ,没有重复字符的最长子串是 “abc” ,那么长度就是3。给定 “bbbbb” ,最长的子串就是 “b” ,长度是1。给定 “pwwkew” ,最长子串是 “wke” ,长度是3。请注意答案必须是一个子串,”pwke” 是 子序列 而不是子串。class ...原创 2018-05-06 22:47:39 · 186 阅读 · 0 评论 -
数组
11. 盛最多水的容器给定 n 个正整数 a1,a2,…,an,其中每个点的坐标用(i, ai)表示。 画 n 条直线,使得线 i 的两个端点处于(i,ai)和(i,0)处。请找出其中的两条直线,使得他们与 X 轴形成的容器能够装最多的水。注意:你不能倾斜容器,n 至少是2。class Solution {public: int maxArea(vector&amp;lt;int...原创 2018-05-06 22:42:43 · 124 阅读 · 0 评论