zoukankan      html  css  js  c++  java
  • Codility---Dominator

    Task description

    A zero-indexed array A consisting of N integers is given. The dominator of array A is the value that occurs in more than half of the elements of A.

    For example, consider array A such that

    A[0] = 3 A[1] = 4 A[2] = 3 A[3] = 2 A[4] = 3 A[5] = -1 A[6] = 3 A[7] = 3

    The dominator of A is 3 because it occurs in 5 out of 8 elements of A (namely in those with indices 0, 2, 4, 6 and 7) and 5 is more than a half of 8.

    Write a function

    class Solution { public int solution(int[] A); }

    that, given a zero-indexed array A consisting of N integers, returns index of any element of array A in which the dominator of A occurs. The function should return −1 if array A does not have a dominator.

    Assume that:

    • N is an integer within the range [0..100,000];
    • each element of array A is an integer within the range [−2,147,483,648..2,147,483,647].

    For example, given array A such that

    A[0] = 3 A[1] = 4 A[2] = 3 A[3] = 2 A[4] = 3 A[5] = -1 A[6] = 3 A[7] = 3

    the function may return 0, 2, 4, 6 or 7, as explained above.

    Complexity:

    • expected worst-case time complexity is O(N);
    • expected worst-case space complexity is O(1), beyond input storage (not counting the storage required for input arguments).

    Elements of input arrays can be modified.

    Solution
     
    Programming language used: Java
    Total time used: 1 minutes
     
    Code: 01:47:41 UTC, java, final, score:  100
    // you can also use imports, for example:
    // import java.util.*;
    
    // you can write to stdout for debugging purposes, e.g.
    // System.out.println("this is a debug message");
    
    class Solution {
        public int solution(int[] A) {
            // write your code in Java SE 8
            int size = 0, leader = -1;
            for(int i=0; i<A.length;i++) {
                if(size == 0) {
                    leader = A[i];
                }
                if(leader == A[i]) {
                    size++;
                } else {
                    size--;
                }
            }
            if(size == 0) return -1;
            int index = 0, count = 0;
            for(int i=0; i<A.length; i++) {
                if(leader == A[i]) {
                    index = i;
                    count++;
                }
            }
            if(count*2 <= A.length) return -1;
            return index;
        }
    }


    https://codility.com/demo/results/trainingK4VATM-6K8/
  • 相关阅读:
    laravel的验证码
    laravel的中间件
    laravel的基本使用
    laravel的路由
    layui上传文件的choose只触发一次
    宝塔访问站点上一级目录
    orcale的几个查询
    tree的递归,适合与el-tree
    GIT 命令大全
    Oracle 时间戳与日期的转换
  • 原文地址:https://www.cnblogs.com/samo/p/6984377.html
Copyright © 2011-2022 走看看