数据结构与算法
文章平均质量分 57
数据结构:是指相互之间存在一种或多种特定关系的数据元素的集合用计算机存储、组织数据的方式。数据结构分别为逻辑结构、(存储)物理结构和数据的运算三个部分。
书生伯言
这个作者很懒,什么都没留下…
展开
-
算法-动态规划-leetcode918. 环形子数组的最大和
Kadane 算法:目的:对于一个给定数组 A,Kadane 算法可以用来找到 A 的最大子段和。状态:dp[j] 为以 A[j] 结尾的最大子段和状态转移:dp[j+1]=A[j+1]+max(dp[j],0)dp[j+1]=A[j+1]+max(dp[j],0)dp[j+1]=A[j+1]+max(dp[j],0)伪代码:ans = cur = 0for x in A: cur = x + max(cur, 0) ans = max(ans, cur)return ans.原创 2021-07-06 00:41:40 · 226 阅读 · 0 评论 -
算法-动态规划-leetcode53. 最大子序和
定义状态dp[i]:到nums[i]结尾(算上nums[i])的连续数组的最大和maxSum:连续数组的最大和初始化状态dp[i] = nums[i]:对应每个索引位置的数maxSum:nums.length>=2,Math.max(dp[i-1]+nums[i], dp[i])状态转移从1开始遍历,当dp[i-1]+nums[i] > dp[i]时,dp[i]= dp[i-1]+nums[i]。maxMoney = Math.max(maxSum, dp[i])。class .原创 2021-07-02 01:26:06 · 153 阅读 · 0 评论 -
算法-动态规划-leetcode213. 打家劫舍2
分为两步,首先需要解环,就分成了以下两种情况。第一个房屋被盗,数组变为2~n-1第一个房屋没被盗,数组变为1~n问题将变成之前的打家劫舍的问题了。定义状态money[i]:到nums[i]为止(第i家房屋被盗)的偷盗的最大值maxMoney:偷盗的最大金额初始化状态money[i] = nums[i]:对应每个房屋的金额maxMoney:nums.length>=2,Math.max(money[0], money[1])状态转移i < j-1,当money[i] +.原创 2021-07-02 00:44:02 · 257 阅读 · 0 评论 -
算法-动态规划-leetcode673. 最长递增子序列的个数
最长递增子序列的个数思路定义状态dp[i]:到nums[i]为止的最长递增子序列长度count[i]:到nums[i]为止的最长递增子序列个数初始化状态dp = [1] * n:代表最长递增子序列的长度至少为1count = [1] * n:代表最长递增子序列的个数至少为1状态转移对于每一个数nums[i],看在它之前的数nums[j](0<= j < i)是否比当前数nums[i]小,如果nums[i] > nums[j],那么相当于到nums[j]为止的最长递增子序.原创 2021-06-29 23:52:03 · 338 阅读 · 0 评论 -
算法-动态规划-leetcode300. 最长递增子序列
给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。示例 1:输入:nums = [10,9,2,5,3,7,101,18] 输出:4 解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。示例 2:输入:nums = [0,1,0,3,2,3] 输出:4示例 3:输入:nums = [7,7,7,7,7原创 2021-06-29 21:33:35 · 210 阅读 · 1 评论 -
算法-广度优先搜索-二叉树的层序遍历&数组生成二叉树
二叉树的层序遍历给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层序遍历结果:[ [3], [9,20], [15,7]]树的定义:public class TreeNode { int val; TreeNode left; TreeNode right原创 2021-06-28 01:33:21 · 280 阅读 · 0 评论 -
算法-深度优先搜索-二叉树的前序、中序、后序遍历
树的遍历1、 前序遍历一、给你二叉树的根节点 root ,返回它节点值的 前序 遍历。示例 1:输入:root = [1,null,2,3]输出:[1,2,3]提示:树中节点数目在范围 [0, 100] 内-100 <= Node.val <= 100树的定义:public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() {} TreeNode(int原创 2021-06-27 21:25:45 · 492 阅读 · 1 评论 -
算法-(1)排序算法
声明:图片引用自网络,感谢各位大牛的制作,如有侵犯请告知,非盈利目的,仅学习使用。稳定排序:冒泡排序 — O(n²)插入排序 — O(n²)桶排序 — O(n); 需要 O(k) 额外空间归并排序 — O(nlogn); 需要 O(n) 额外空间二叉排序树排序— O(n log n) 期望时间; ...原创 2019-08-22 08:57:10 · 158 阅读 · 0 评论