美文网首页Java 杂谈
每日修仙(一)

每日修仙(一)

作者: 话尔loony | 来源:发表于2019-07-08 15:24 被阅读0次

每日修仙尝试于9102年7/8.希望本座早日习得九阳神功,便可在灵石之路上助尔等一臂之力。

如题:

  • 给定一个包含 n + 1 个整数的数组 nums,其数字都在 1 到 n 之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。
示例:
输入:{1,4,5,9,10,2,3,7,8,6,9}
输出:9

说明:
1、不能更改原数组(假设数组是只读的)。
2、只能使用额外的 O(1) 的空间。
3、时间复杂度小于 O(n2) 。
4、数组中只有一个重复的数字,但它可能不止重复出现一次。

解法一:

使用Set,这个就不用多BB了。但是一般使用这种解法,是不会有加分的,也就是说,你的面试者可能不会认可你。So,你可能要了解一哈“鸽子洞原理”(也称之为“抽屉原理”)了。

解法二:

弗洛伊德的乌龟和兔子(循环检测)。对于每对索引 i 和值 v_i而言,“下一个” v_j 位于索引 v_i处,我们可以将此问题减少到循环检测。

public class TortoiseAndHare {
    
    public static void main(String[] args) {
        int nums[] = {1,4,5,9,10,2,3,7,8,6,9};
        int dup = findDuplicate(nums);
        System.out.println(dup);
    }
    /**
     * 弗洛伊德的乌龟和兔子
    
     * <p>Title: findDuplicate</p>  
    
     * <p>Description:因为 nums 中的每个数字都在 1 和  n 之间,所以它必须指向存在的索引。此外,由于 0不能作为 nums 中的值出现,
     nums[0] 不能作为循环的一部分 </p>  
    
     * @return
     */
    public static int findDuplicate(int nums[]) {
        int i = 0;
        int tortoise = nums[0];
        int hare = nums[0];
        do {
            tortoise = nums[tortoise];
            hare = nums[nums[hare]];
            System.out.print("第{"+(++i)+"}次");
            System.out.print(" tortoise="+tortoise);
            System.out.println(" hare="+hare);
        }while(tortoise != hare);
        
        return tortoise;
        
    }
    

执行结果如下:

第{1}次 tortoise=4 hare=10
第{2}次 tortoise=10 hare=6
第{3}次 tortoise=9 hare=9
9

天地三清,道法无常。
溜溜球...

相关文章

  • 每日修仙(一)

    每日修仙尝试于9102年7/8.希望本座早日习得九阳神功,便可在灵石之路上助尔等一臂之力。 如题: 给定一个包含 ...

  • 每日练笔:【游戏修仙系统】修仙系统(1)

    “快快快,老年人要超你车了。” 看到攻坚队频道出现这样的字眼,林超越顿时一阵紧张,立马狂暴手速,但依然于事无补,毕...

  • 每日练笔:【游戏修仙系统】修仙系统(2)

    “叮,检测到宿主情绪波动较大,系统已启动。” “系统绑定中……” “系统绑定成功,属性:游戏,宿主可以通过任务来获...

  • 2019-08-23

    正版修仙手游,一夜挂机修真四万年! 《修仙聊天群》一款纯正挂机修仙手游,坐着就能升仙!融合了修仙、策略、模拟经验等...

  • 2019-07-24

    正版修仙放置手游,一起打造小說裡面的修仙世界! 《修真模擬器》是一款模擬修仙的放置手游,融合了修仙,角色扮演,模擬...

  • 目录

    三见误修仙楔子 三见误修仙第一章

  • 玄元修真錄

    正版修仙放置手遊,壹起打造小說裏面的修仙世界! 《玄元修真錄》是首款模擬修仙的放置手遊,融合了修仙,策略玩法,模擬...

  • 关于人性、社会、规律,一点感受

    《凡人修仙传》 凡人修仙,生命贵贱,生命如草芥,凡人的无力。 韩立和张铁,同样出身,一个生入修仙,一个死亡被炼铁奴...

  • 吐槽(七十二)

    老爹每天吸烟 吸得腾云驾雾 像修仙一样 每天坚持做任务、升级、打怪 别人是隔离 老爹是修仙 修仙主要是闭关 而不是...

  • 生生世世爱你不息

    他是一名修仙者。在上清宫修炼数年。 她是一株桃花。每日听他说经讲道。静静陪伴着他。 那日。上清宫宫主欲渡劫升仙。他...

网友评论

    本文标题:每日修仙(一)

    本文链接:https://www.haomeiwen.com/subject/cuaohctx.html