java数据结构与算法
文章平均质量分 64
Object girl=null;
对方正在输入...
展开
-
摩尔投票法
摩尔投票法摩尔投票法:算法解决的问题是如何在任意多的候选人(选票无序),选出获得票数最多的那个。常见的算法是扫描一遍选票,对每个候选人进行统计的选票进行统计。当候选人的数目固定时,这个常见算法的时间复杂度为:O ( n ) ,当候选人的数目不定时,统计选票可能会执行较长时间,可能需运行O ( n^2 )的时间。当选票有序时,可以很容易编出O(n)的程序,首先找到中位数,然后检查中位数的个数是否超过选票的一半。这篇论文针对无序且侯选人不定的情形,提出了摩尔投票算法。算法的比较次数最多是选票(记为n)的两倍原创 2022-02-21 00:21:20 · 1862 阅读 · 0 评论 -
动态规划day12
动态代理day121. 杨辉三角题目描述:给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。在「杨辉三角」中,每个数是它左上方和右上方的数的和。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/pascals-triangle著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。示例 1:输入: numRows = 5输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1原创 2021-08-10 00:34:29 · 69 阅读 · 0 评论 -
动态规划day11
动态规划day111. 丑数 II题目描述:给你一个整数 n ,请你找出并返回第 n 个 丑数 。丑数 就是只包含质因数 2、3 和/或 5 的正整数。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/ugly-number-ii著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。示例 1:输入:n = 10输出:12解释:[1, 2, 3, 4, 5, 6, 8, 9, 10, 12] 是由前 10 个丑数组原创 2021-08-09 12:05:37 · 65 阅读 · 0 评论 -
动态规划day10
动态规划day101. 等差数列划分题目描述:如果一个数列 至少有三个元素 ,并且任意两个相邻元素之差相同,则称该数列为等差数列。例如,[1,3,5,7,9]、[7,7,7,7] 和 [3,-1,-5,-9] 都是等差数列。给你一个整数数组 nums ,返回数组 nums 中所有为等差数组的 子数组 个数。子数组 是数组中的一个连续序列。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/arithmetic-slices著作权归领扣网络原创 2021-08-05 00:51:51 · 84 阅读 · 0 评论 -
动态规划day09
动态代理day091. 单词拆分题目描述:给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:(1) 拆分时可以重复使用字典中的单词。(2) 你可以假设字典中没有重复的单词。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/word-break著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。示例 1:输入: s = “leet原创 2021-08-04 23:07:47 · 59 阅读 · 0 评论 -
动态规划day08
动态规划day081. 最佳买卖股票时机含冷冻期题目描述:给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票):1.你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。2.卖出股票后,你无法在第二天买入股票 (即冷冻期为 1 天)。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/best-time-to-buy-a原创 2021-08-03 00:43:57 · 80 阅读 · 0 评论 -
动态规划day07
动态规划day071. 最佳观光组合题目描述:给你一个正整数数组 values,其中 values[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的 距离 为 j - i。一对景点(i < j)组成的观光组合的得分为 values[i] + values[j] + i - j ,也就是景点的评分之和 减去 它们两者之间的距离。返回一对观光景点能取得的最高分。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/best原创 2021-08-01 19:02:42 · 84 阅读 · 0 评论 -
动态规划day06
动态规划day061. 乘积最大子数组题目描述:给你一个整数数组 nums ,请你找出数组中乘积最大的连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-product-subarray著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。示例 1:输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。原创 2021-08-01 00:38:12 · 103 阅读 · 0 评论 -
动态规划day05
动态规划day051. 最大子序和题目描述:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-subarray著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为原创 2021-07-30 16:33:20 · 80 阅读 · 0 评论 -
动态规划day04
动态规划day041. 跳跃游戏题目描述:给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/jump-game著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。示例 1:输入:nums = [2,3,1,1,4]输出:true解释:可以先跳 1 步,从下标 0原创 2021-07-29 18:41:55 · 110 阅读 · 0 评论 -
动态规划day03
动态规划day031. 打家劫舍题目描述:你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/house-robber著作权归领扣网络所有。商业转载请联系原创 2021-07-29 16:05:57 · 88 阅读 · 0 评论 -
动态规划day02
动态规划day021. 爬楼梯题目描述:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/climbing-stairs著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1 阶 + 1 阶2 阶原创 2021-07-27 16:30:03 · 78 阅读 · 0 评论 -
动态规划day01
动态规划day011. 斐波那契数列:题目描述:斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:F(0) = 0,F(1) = 1F(n) = F(n - 1) + F(n - 2),其中 n > 1给你 n ,请计算 F(n) 。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/fibonacci-number著作权归领扣网络所有。商业原创 2021-07-26 14:37:31 · 85 阅读 · 1 评论 -
走阶梯问题之动态规划(java)
走阶梯问题之动态规划(java)问题描述:有一座高度为10级的阶梯,从下往上走,每跨一步只能向上1级或2级台阶,计算一种有多少种走法动态规划思路:分析最后一步: 1)从第9级一步1级走到第10级; 2)从第8级一步2级走到第10级; 3)假设从第1级到第8级有X种走法,记为F(8) 假设从第1级到第9级有Y种走法,记为F(9) 那么从第1级到第10级有X+Y种走法,也就是F(10) = F(9) + F(8);同理:F(9) = F(8) + F(7) ...;原创 2021-06-08 14:31:11 · 357 阅读 · 0 评论 -
最大公约数两种实现(java)
最大公约数两种实现(java)1. 辗转相除法(欧几里得算法)例如:求98和63的最大公约数98 / 63 = 1 mod 3563 / 35 = 1 mod 2835 / 28 = 1 mod 728 / 7 = 4 mod 0所以最大公约数为7 ,以除数和余数反复做除法运算,当余数为 0 时,取当前算式除数为最大公约数,所以就得出了 98 和 63的最大公约数 7。代码实现:/** * 最大公约数--辗转相除法 */public class Main { public s原创 2021-06-08 00:24:04 · 411 阅读 · 2 评论 -
(java) List<T> 类型的指定对象的属性来排序
(java) List 类型的指定对象的属性来排序java 8以上的版本:User实体类:class User { private Integer id; private String userName; public User(Integer id, String userName) { this.id = id; this.userName = userName; }原创 2021-04-12 10:58:02 · 340 阅读 · 0 评论 -
栈
栈与逆波兰表达式计算(java)栈的应用场景:1.使用数组模拟栈使用数组模拟栈的push、pop、遍历等操作实现代码:import java.util.Scanner;/** * @author HP * @since 2021/3/8 */public class ArrayStackDemo { public static void main(String[] args) { ArrayStack stack = new ArrayStack(5);原创 2021-03-09 10:27:23 · 82 阅读 · 0 评论