算法
weixin_45161518
这个作者很懒,什么都没留下…
展开
-
快乐数(算法)
题目: 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。 如果 n 是快乐数就返回 True ;不是,则返回 False 。 我们这里可以使用快慢指针来解答此题。先看下图 也就是说,如果不是快乐数的话,那么经过若干次运算后,会进入循环。类似判断链表 是否循环的算法。这里,同样的,我们可以使用快慢指针来进行判断。原创 2020-09-22 13:25:23 · 1568 阅读 · 0 评论 -
跳台阶
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 这道题对于经常刷算法的人来说,并不算难,这里提供了两种解决方法,分别为动态规划和递归。 //递归 public int JumpFloor(int target) { if (target == 1 || target == 2) return target; else return JumpFloo原创 2020-06-27 11:13:31 · 110 阅读 · 1 评论 -
字符流中第一个不重复的字符
算法题(每天刷一刷算法) 题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。 解题思路如下: 1.用queue记录不重复的字符串 2.用map记录字符出现的次数 3.判断出现的字符次数是否为1,如果是,返回该字符,如果不是,弹出该字符,继续判断 4.如果队列为空,返回# Java实现代码如下: import java.util.*; p原创 2020-06-12 12:25:24 · 90 阅读 · 0 评论 -
环形链表的约瑟夫问题
今天在牛客网刷了一道题目,如下 据说著名犹太历史学家 Josephus 有过以下故事:在罗马人占领乔塔帕特后,39 个犹太人与 Josephus 及他的朋友躲到一个洞中,39 个犹太人决定宁愿死也不要被敌人抓到,于是决定了一种自杀方式,41 个人排成一个圆圈,由第 1 个人开始报数,报数到 3 的人就自杀,然后再由下一个人重新报 1,报数到 3 的人再自杀,这样依次下去,直到剩下最后一个人时,那个人可以自由选择自己的命运。这就是著名的约瑟夫问题。现在请用单向环形链表得出最终存活的人的编号。 本人看了一下别原创 2020-06-03 10:32:45 · 181 阅读 · 0 评论 -
请实现一个算法,确定一个字符串的所有字符是否全都不同。
请实现一个算法,确定一个字符串的所有字符是否全都不同。 在牛客网刷了一道题目,虽说简单,但自己解决的想法跟直接插入排序的想法类似,感觉挺有趣的,就写了下来。题目如下 解决方法。 public boolean checkDifferent(String iniString) { //转为字符数组 char[] c = iniString.toCharArray(); //首先设置为true,假设字符串中的字符都不重复 boolean f原创 2020-05-10 11:58:03 · 418 阅读 · 0 评论