
算法题
文章平均质量分 62
阳哥赚钱很牛
努力努力努力
展开
-
Leetcode算法题——完美数
题目描述对于一个 正整数,如果它和除了它自身以外的所有 正因子 之和相等,我们称它为 「完美数」。给定一个 整数 n, 如果是完美数,返回 true,否则返回 false示例 1:输入:28输出:True解释:28 = 1 + 2 + 4 + 7 + 141, 2, 4, 7, 和 14 是 28 的所有正因子。示例 2:输入:num = 6输出:true示例 3:输入:num = 496输出:true示例 4:输入:num = 8128输出:tru.转载 2021-08-23 15:07:53 · 649 阅读 · 0 评论 -
JAVA高级排序——希尔排序
为何称高级排序呢?是因为之前学习的基础排序,包括冒泡排序,选择排序还有插入排序,对他们在最坏情况下的时间复杂度做了分析,发现都是O(N^2),而平方阶通过我们之前学习算法分析我们知道,随着输入规模的增大,时间成本将急剧上 升,所以这些基本排序方法不能处理更大规模的问题,接下来我们学习一些高级的排序算法,争取降低算法的时间 复杂度最高阶次幂。希尔排序希尔排序是插入排序的一种,又称“缩小增量排序”,是插入排序算法的一种更高效的改进版本。学习插入排序的时候,我们会发现一...原创 2021-08-05 19:21:59 · 151 阅读 · 0 评论 -
学习JAVA必会的排序——插入排序
插入排序(Insertion sort)是一种简单直观且稳定的排序算法。插入排序的工作方式非常像人们排序一手扑克牌一样。开始时,我们的左手为空并且桌子上的牌面朝下。然后,我 们每次从桌子上拿走一张牌并将它插入左手中正确的位置。为了找到一张牌的正确位置,我们从右到左将它与已在 手中的每张牌进行比较,如下图所示:需求:排序前:{4,3,2,10,12,1,5,6}排序后:{1,2,3,4,5,6,10,12}排序原理: 1.把所有的元素分为两组,已经排序的和未排序的;2.找..原创 2021-08-04 23:31:30 · 244 阅读 · 1 评论 -
学习JAVA必会的排序——选择排序
选择排序是一种更加简单直观的排序方法。需求: 排序前:{4,6,8,7,9,2,10,1} 排序后:{1,2,4,5,7,8,9,10}一、排序原理:在序列中选择合适的元素放在合适的位置。1.每一次遍历的过程中,都假定第一个索引处的元素是最小值,和其他索引处的值依次进行比较,如果当前索引处 的值大于其他某个索引处的值,则假定其他某个索引出的值为最小值,最后可以找到最小值所在的索引2.交换第一个索引处和最小值所在的索引处的值也就是说,每次选...原创 2021-08-03 23:01:50 · 182 阅读 · 0 评论 -
剑指Offer算法题——合并两个排序的链表
题目描述:输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。示例1:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4原创 2021-07-27 21:18:33 · 221 阅读 · 0 评论 -
剑指Offer算法题——青蛙跳台阶问题(JAVA)
题目描述:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。示例 1:输入:n = 2输出:2示例 2:输入:n = 7输出:21示例 3:输入:n = 0输出:1分析:我们正向思考问题,一次跳1阶或2阶,这样分析问题,每次都要分成两个分支。我们不如...原创 2021-07-16 18:57:49 · 313 阅读 · 0 评论 -
剑指Offer算法题——替换空格(JAVA)
题目描述:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."首先,在Java语言里,字符串都是不可变的类型,无法直接修改字符串的某一位。C++ 语言中,string 被设计成可变的类型,可以在实现原地修改。知识点:public final class String extends ObjectString类代表字符串。 Java程序中的所有字符串文...原创 2021-07-16 14:54:46 · 207 阅读 · 0 评论 -
剑指Offer算法题——数组中重复的数字(JAVA)
题目描述:找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3 首先我们复习一下相关的数据结构知识:Set1.概述和特点Java.util包 Interface Set<E> extends Collection<E..原创 2021-07-15 22:13:34 · 204 阅读 · 0 评论 -
剑指Offer算法题——斐波那契数列(JAVA)
首先我们聊一下什么是斐波那契数列斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1,F(n)=F(n - 1)+F(n - 2)(n≥ 2,n∈ N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为...原创 2021-07-14 23:11:38 · 269 阅读 · 0 评论 -
剑指Offer算法题——用两个栈实现队列(JAVA)
题目描述:用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )示例1:输入:["CQueue","appendTail","deleteHead","deleteHead"][[],[3],[],[]]输出:[null,null,3,-1]示例2:输入:["CQueue","deleteHead","app原创 2021-07-14 16:14:26 · 315 阅读 · 4 评论