Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- element x;
- int count ← 0;
- For(i = 0 to n − 1) {
- if(count == 0) { x ← A[i]; count++; }
- else if (A[i] == x) count++;
- else count−−;
- }
- Check if x is dominant element by scanning array A
- static int dominant(final int... set) {
- final int[] freqs = new int[Integer.MAX_VALUE];
- for (int n : set) {
- ++freqs[n];
- }
- int dom_freq = Integer.MIN_VALUE;
- int dom_idx = -1;
- int dom_n = -1;
- for (int i = set.length - 1; i >= 0; --i) {
- final int n = set[i];
- if (dom_n != n) {
- final int freq = freqs[n];
- if (freq > dom_freq) {
- dom_freq = freq;
- dom_n = n;
- dom_idx = i;
- } else if (freq == dom_freq) {
- dom_idx = -1;
- }
- }
- }
- return dom_idx;
- }
- public int dominator(int[] A) {
- int N = A.length;
- for(int i = 0; i< N/2+1; i++)
- {
- int count=1;
- for(int j = i+1; j < N; j++)
- {
- if (A[i]==A[j]) {count++; if (count > (N/2)) return i;}
- }
- }
- return -1;
- }
- public Integer findDominator(int[] arr) {
- int[] arrCopy = arr.clone();
- Arrays.sort(arrCopy);
- int length = arrCopy.length;
- int middleIndx = (length - 1) /2;
- int middleIdxRight;
- int middleIdxLeft = middleIndx;
- if (length % 2 == 0) {
- middleIdxRight = middleIndx+1;
- } else {
- middleIdxRight = middleIndx;
- }
- if (arrCopy[0] == arrCopy[middleIdxRight]) {
- return arrCopy[0];
- }
- if (arrCopy[middleIdxLeft] == arrCopy[length -1]) {
- return arrCopy[middleIdxLeft];
- }
- return null;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement