找卧底

找卧底

https://ac.nowcoder.com/acm/contest/6383/A

找卧底

  • 时间复杂度: o(n)
  • 空间复杂度: o(1)
  • 思路: 题目会给出一个乱序的数组,我们可以尝试将其恢复。我们假设牛牛的数在有序数组中排在第一个位置,即a[0](牛牛这么牛,当然要排在最前面),然后其他的数依次递增排列,即n排在a[n]。则当我们拿到打乱顺序后的数组后,我们可以取出a[0],假设此时a[0]=p,则可知这个数原先所在位置为a[p],我们取出a[p],比较a[p]是否等于p,如果不是我们将a[0]和a[p]的值互换重复操作,如果是则说明牛牛所代表的数就是p,卧底找到了。
  • 代码实现
package nowcoder.pinnacle.s1.match3.gold;

/**
 * 找卧底
 * @Author: nayix
 * @Date: 7/21/20 10:58 AM
 */
public class ProblemA {

    /**
     *
     * @param n int整型
     * @param a int整型一维数组
     * @return int整型
     */
    public int search (int n, int[] a) {
        while (a[a[0]] != a[0]) {
            int p = a[0];
            a[0] = a[p];
            a[p] = p;
        }
        return a[0];
    }

    public static void main(String[] args) {
        ProblemA problemA = new ProblemA();
        System.out.println(problemA.search(4, new int[]{1, 2, 1, 4, 3}));
    }
}
全部评论
用异或
1 回复 分享
发布于 2020-07-22 12:22

相关推荐

不愿透露姓名的神秘牛友
07-04 14:23
steelhead:你回的有问题,让人感觉你就是来学习的
点赞 评论 收藏
分享
风中翠竹:真的真的真的没有kpi。。。面试官是没有任何kpi的,捞是真的想试试看这个行不行,碰碰运气,或者是面试官比较闲现在,没事捞个人看看。kpi算HR那边,但是只有你入职了,kpi才作数,面试是没有的。
双非有机会进大厂吗
点赞 评论 收藏
分享
小浪_Coding:找硬件测试,也可兼顾软测欧, 简历还可以的 ,注意排版,项目写的有条理一点, 然后个人技能多加点, 润色好简历之后就开始沟通海投了,深圳,东莞这边做硬件相关的公司还不少, 医疗类,仪器类的都可以尝试
点赞 评论 收藏
分享
榕城小榕树:1200单休,我去干点啥别的不好
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务