Java 查找int[]数组中最常用的元素

Java 查找int[]数组中最常用的元素,java,arrays,Java,Arrays,如何编写方法并返回7 我想在没有列表、地图或其他帮助的情况下保持它的本地特性。 仅阵列[] 获取映射到映射元素->计数 遍历数组并处理映射 反复浏览地图,找出最流行的 这是错误的语法。创建匿名数组时,不能给出其大小 编写以下代码时: int[] a = new int[10]{1,2,3,4,5,6,7,7,7,7}; 您正在创建一个匿名int数组,其大小将由您在大括号中提供的值的数量决定 您可以像以前那样将其指定为引用,但这将是正确的语法:- new int[] {1,23,4,4,

如何编写方法并返回7

我想在没有列表、地图或其他帮助的情况下保持它的本地特性。 仅阵列[]

  • 获取映射到映射元素->计数
  • 遍历数组并处理映射
  • 反复浏览地图,找出最流行的

  • 这是错误的语法。创建匿名数组时,不能给出其大小

    编写以下代码时:

    int[] a = new int[10]{1,2,3,4,5,6,7,7,7,7};
    
    您正在创建一个匿名int数组,其大小将由您在大括号中提供的值的数量决定

    您可以像以前那样将其指定为引用,但这将是正确的语法:-

        new int[] {1,23,4,4,5,5,5};
    
    现在,只需使用正确的索引位置:

        int[] a = new int[]{1,2,3,4,5,6,7,7,7,7};
    

    试试这个答案。首先,数据:

        System.out.println(a[7]);
    
    在这里,我们构建一个地图,计算每个数字出现的次数:

    int[] a = {1,2,3,4,5,6,7,7,7,7};
    
    编辑

    以下是我的答案,不使用地图、列表等,只使用数组;虽然我正在对数组进行排序。它是O(n logn)复杂度,比O(n^2)可接受的解决方案要好

    System.out.println(popular);
    > 7
    
    public int findPopular(int[]a){
    如果(a==null | | a.length==0)
    返回0;
    数组。排序(a);
    int-previous=a[0];
    int popular=a[0];
    整数计数=1;
    int maxCount=1;
    for(int i=1;i最大计数){
    流行=a[i-1];
    最大计数=计数;
    }
    先前=a[i];
    计数=1;
    }
    }
    return count>maxCount?a[a.length-1]:常用;
    }
    
    这张没有地图的照片:

    public int findPopular(int[] a) {
    
        if (a == null || a.length == 0)
            return 0;
    
        Arrays.sort(a);
    
        int previous = a[0];
        int popular = a[0];
        int count = 1;
        int maxCount = 1;
    
        for (int i = 1; i < a.length; i++) {
            if (a[i] == previous)
                count++;
            else {
                if (count > maxCount) {
                    popular = a[i-1];
                    maxCount = count;
                }
                previous = a[i];
                count = 1;
            }
        }
    
        return count > maxCount ? a[a.length-1] : popular;
    
    }
    
    公共类主{
    公共静态void main(字符串[]args){
    int[]a=新的int[]{1,2,3,4,5,6,7,7,7};
    System.out.println(getmostpopularlelement(a));
    }
    私有静态int getmostpopularlelement(int[]a){
    int maxElementIndex=getArrayMaximumElementIndex(a);
    int[]b=新的int[a[maxElementIndex]+1]
    for(int i=0;i=a[maxElementIndex]){
    maxElementIndex=i;
    }
    }
    返回maxElementIndex;
    }      
    }
    
    如果数组可以包含
    <0
    的元素,则只需更改某些代码。
    当数组项不是大数字时,此算法非常有用。

    如果不想使用映射,只需执行以下步骤:

  • 对数组排序(使用
    Arrays.Sort()
  • 使用变量保存最常用的元素(mostPopular),使用变量保存其在数组中的出现次数(mostPopularCount),使用变量保存当前数字在迭代中的出现次数(currentCount)
  • 遍历数组。如果当前元素与mostPopular相同,则增加currentCount。如果不是,则将currentCount重置为1。如果currentCount>mostPopularCount,则将mostPopularCount设置为currentCount,并将mostPopular设置为当前元素
  • public int getPopularRelation(int[]a)
    {
    int count=1,tempCount;
    int popular=a[0];
    内部温度=0;
    对于(int i=0;i<(a.length-1);i++)
    {
    温度=a[i];
    tempCount=0;
    对于(int j=1;j计数)
    {
    流行=临时;
    计数=临时计数;
    }
    }
    回归大众;
    }
    
    假设您的数组已排序(如您发布的数组),您只需在数组上迭代并计算最长的元素段,它类似于@narek.gevorgyan的帖子,但没有非常大的数组,并且无论数组大小,它都使用相同的内存量:

    public int getPopularElement(int[] a)
    {
      int count = 1, tempCount;
      int popular = a[0];
      int temp = 0;
      for (int i = 0; i < (a.length - 1); i++)
      {
        temp = a[i];
        tempCount = 0;
        for (int j = 1; j < a.length; j++)
        {
          if (temp == a[j])
            tempCount++;
        }
        if (tempCount > count)
        {
          popular = temp;
          count = tempCount;
        }
      }
      return popular;
    }
    

    如果数组未排序,请使用
    Arrays.sort(a)对其排序

    似乎您正在查找模式值(统计模式),请查看统计函数。

    导入java.util.Scanner;
    
    private static int getMostPopularElement(int[] a){
        int counter = 0, curr, maxvalue, maxcounter = -1;
        maxvalue = curr = a[0];
    
        for (int e : a){
            if (curr == e){
                counter++;
            } else {
                if (counter > maxcounter){
                    maxcounter = counter;
                    maxvalue = curr;
                }
                counter = 0;
                curr = e;
            }
        }
        if (counter > maxcounter){
            maxvalue = curr;
        }
    
        return maxvalue;
    }
    
    
    public static void main(String[] args) {
        System.out.println(getMostPopularElement(new int[]{1,2,3,4,5,6,7,7,7,7}));
    }
    
    公共类最重复编号 { 公共静态void main(字符串参数[]) { int most=0; 内部温度=0; int count=0,tempcount; 扫描仪输入=新扫描仪(系统输入); System.out.println(“输入任何数字”); int n=in.nextInt(); int arr[]=新的int[n]; System.out.print(“输入数组值:”); 对于(inti=0;i
    package-frequency;
    导入java.util.HashMap;
    导入java.util.Map;
    公营班次{
    //查找数组中最常见的整数
    公共静态void main(字符串[]args){
    int arr[]={1,2,3,4,3,2,2,3,3};
    System.out.println(getfrequency(arr));
    System.out.println(getFrequentBySorting(arr));
    }
    //使用Map,TC:O(n)SC:O(n)
    静态公共int getfrequency(int arr[]{
    int ans=0;
    Map m=新的HashMap();
    用于(int i:arr){
    如果(m.containsKey(i)){
    m、 put(i,m.get(i)+1);
    }否则{
    m、 put(i,1);
    }
    }
    int maxVal=0;
    for(整数在:m.keySet()中){
    如果(m.get(in)>maxVal){
    ans=in;
    maxVal=m.get(in);
    }
    }
    返回ans;
    }
    //对数组排序,然后找到它TC:O(nlogn)SC:O(1)
    公共静态int getFrequentBySorting(int arr[]){
    int电流=arr[0];
    int ansCount=0;
    int tempCount=0;
    int ans=电流;
    用于(int i:arr){
    如果(i==当前){
    tempCount++;
    }
    if(tempCount>ansCount){
    ansCount=临时计数;
    ans=i;
    }
    电流=i;
    }
    返回ans;
    }
    }
    
    public
    
    public class Main {       
    
        public static void main(String[] args) {
            int[] a = new int[]{ 1, 2, 3, 4, 5, 6, 7, 7, 7, 7 };
            System.out.println(getMostPopularElement(a));        
        }
    
        private static int getMostPopularElement(int[] a) {             
            int maxElementIndex = getArrayMaximumElementIndex(a); 
            int[] b = new int[a[maxElementIndex] + 1]
    
            for (int i = 0; i < a.length; i++) {
                ++b[a[i]];
            }
    
            return getArrayMaximumElementIndex(b);
        }
    
        private static int getArrayMaximumElementIndex(int[] a) {
            int maxElementIndex = 0;
    
            for (int i = 1; i < a.length; i++) {
                if (a[i] >= a[maxElementIndex]) {
                    maxElementIndex = i;
                }
            }
    
            return maxElementIndex;
        }      
    
    }
    
    public int getPopularElement(int[] a)
    {
      int count = 1, tempCount;
      int popular = a[0];
      int temp = 0;
      for (int i = 0; i < (a.length - 1); i++)
      {
        temp = a[i];
        tempCount = 0;
        for (int j = 1; j < a.length; j++)
        {
          if (temp == a[j])
            tempCount++;
        }
        if (tempCount > count)
        {
          popular = temp;
          count = tempCount;
        }
      }
      return popular;
    }
    
    private static int getMostPopularElement(int[] a){
        int counter = 0, curr, maxvalue, maxcounter = -1;
        maxvalue = curr = a[0];
    
        for (int e : a){
            if (curr == e){
                counter++;
            } else {
                if (counter > maxcounter){
                    maxcounter = counter;
                    maxvalue = curr;
                }
                counter = 0;
                curr = e;
            }
        }
        if (counter > maxcounter){
            maxvalue = curr;
        }
    
        return maxvalue;
    }
    
    
    public static void main(String[] args) {
        System.out.println(getMostPopularElement(new int[]{1,2,3,4,5,6,7,7,7,7}));
    }
    
    import java.util.Scanner;
    
    
    public class Mostrepeatednumber
    {
        public static void main(String args[])
        {
            int most = 0;
            int temp=0;
            int count=0,tempcount;
            Scanner in=new Scanner(System.in);
            System.out.println("Enter any number");
            int n=in.nextInt();
            int arr[]=new int[n];
            System.out.print("Enter array value:");
            for(int i=0;i<=n-1;i++)
            {
                int n1=in.nextInt();
                arr[i]=n1;
            }
            //!!!!!!!! user input concept closed
            //logic can be started
            for(int j=0;j<=n-1;j++)
            {
            temp=arr[j];
            tempcount=0;
                for(int k=1;k<=n-1;k++)
                    {
                    if(temp==arr[k])
                        {
                            tempcount++;
                        }   
                            if(count<tempcount)
                                {
                                    most=arr[k];
                                        count=tempcount;
                                }
                    }
    
            }
            System.out.println(most);
        }
    
    }
    
    package frequent;
    
    import java.util.HashMap;
    import java.util.Map;
    
    public class Frequent_number {
    
        //Find the most frequent integer in an array
    
        public static void main(String[] args) {
            int arr[]= {1,2,3,4,3,2,2,3,3};
    
            System.out.println(getFrequent(arr));
            System.out.println(getFrequentBySorting(arr));
        }
    
        //Using Map , TC: O(n)  SC: O(n)
        static public int getFrequent(int arr[]){
            int ans=0;
            Map<Integer,Integer> m = new HashMap<>();
            for(int i:arr){
                if(m.containsKey(i)){
                    m.put(i, m.get(i)+1);
                }else{
                    m.put(i, 1);
                }
            }
            int maxVal=0;
            for(Integer in: m.keySet()){
                if(m.get(in)>maxVal){
                    ans=in;
                    maxVal = m.get(in);
                }
            }
            return ans;
        }
    
        //Sort the array and then find it TC: O(nlogn) SC: O(1)
        public static int getFrequentBySorting(int arr[]){
            int current=arr[0];
            int ansCount=0;
            int tempCount=0;
            int ans=current;
            for(int i:arr){
                if(i==current){
                    tempCount++;
                }
                if(tempCount>ansCount){
                    ansCount=tempCount;
                    ans=i;
                }
                current=i;
            }
            return ans;
        }
    
    }
    
    public class MostFrequentNumber {
    
        public MostFrequentNumber() {
    
        }
    
        int frequentNumber(List<Integer> list){
    
            int popular = 0;
            int holder = 0;
    
            for(Integer number: list) {
                int freq = Collections.frequency(list,number);
    
                if(holder < freq){
                    holder = freq;
                    popular = number;
                }
            }
    
           return popular;
    
        }
    
        public static void main(String[] args){
    
            int[] numbers = {4,6,2,5,4,7,6,4,7,7,7};
    
            List<Integer> list = new ArrayList<Integer>();
    
            for(Integer num : numbers){
                list.add(num);
            }
    
    
            MostFrequentNumber mostFrequentNumber = new MostFrequentNumber();
    
            System.out.println(mostFrequentNumber.frequentNumber(list));
    
    
        }
    }
    
    public static void main(String[] args) {
    
        int[] myArray = {1,5,4,4,22,4,9,4,4,8};
        Map<Integer,Integer> arrayCounts = new HashMap<>();
        Integer popularCount  = 0;
        Integer popularValue = 0;
    
        for(int i = 0; i < myArray.length; i++) {
            Integer count = arrayCounts.get(myArray[i]);
            if (count == null) {
                count = 0;
            }
            arrayCounts.put(myArray[i], count == 0 ? 1 : ++count);
            if (count > popularCount) {
                popularCount = count;
                popularValue = myArray[i];
            }
        }
    
        System.out.println(popularValue + " --> " + popularCount);
    }
    
    import java.util.HashMap;
    import java.util.Map;
    import java.util.Comparator;
    import java.util.HashMap;
    import java.util.Map;
    import java.util.stream.IntStream;
    
    public class MosftOftenNumber {
    
        // for O(N) + map O(1) = O(N) 
        public static int mostOftenNumber(int[] a)
        {
            final Map m = new HashMap<Integer,Integer>();
            int max = 0;
            int element = 0;
    
            for (int i=0; i<a.length; i++){
                //initializing value for the map the value will have the counter of each element
                //first time one new number its found will be initialize with zero 
                if (m.get(a[i]) == null)
                    m.put(a[i],0);
    
                //save each value from the array and increment the count each time its found
                m.put(a[i] , (Integer) m.get(a[i]) + 1);
    
                //check the value from each element and comparing with max
                if ( (Integer) m.get(a[i]) > max){
                    max = (Integer) m.get(a[i]);
                    element = a[i];
                }
    
            }
            System.out.println("Times repeated: " + max);
            return element;
        }
    
        public static int mostOftenNumberWithLambdas(int[] a)
        {
            Integer max = IntStream.of(a).boxed().max(Integer::compareTo).get();
            Integer coumtMax = Math.toIntExact(IntStream.of(a).boxed().filter(number -> number.equals(max)).count());
            System.out.println("Times repeated: " + coumtMax);
            return max;
        }
    
        public static void main(String args[]) {
    //      int[] array = {1,1,2,1,1};
    //      int[] array = {2,2,1,2,2};
            int[] array = {1,2,3,4,5,6,7,7,7,7};
            System.out.println("Most often number with loops: " + mostOftenNumber(array));
            System.out.println("Most often number with lambdas: " + mostOftenNumberWithLambdas(array));
        }
    
    }
    
    public class TestPopularElements {
        public static int getPopularElement(int[] a) {
            int count = 1, tempCount;
            int popular = a[0];
            int temp = 0;
            for (int i = 0; i < (a.length - 1); i++) {
                temp = a[i];
                tempCount = 0;
                for (int j = i+1; j < a.length; j++) {
                    if (temp == a[j])
                        tempCount++;
                }
                if (tempCount > count) {
                    popular = temp;
                    count = tempCount;
                }
            }
            return popular;
        }
    
        public static void main(String[] args) {
            int a[] = new int[] {1,2,3,4,5,6,2,7,7,7};
    
            System.out.println("count is " +getPopularElement(a));
        }
    
    }
    
    public void findCounts(int[] arr, int n) {
        int i = 0;
    
        while (i < n) {
            if (arr[i] <= 0) {
                i++;
                continue;
            }
    
            int elementIndex = arr[i] - 1;
    
            if (arr[elementIndex] > 0) {
                arr[i] = arr[elementIndex];
                arr[elementIndex] = -1;
            }
            else {
                arr[elementIndex]--;
                arr[i] = 0;
                i++;
            }
        }
    
        Console.WriteLine("Below are counts of all elements");
    
        for (int j = 0; j < n; j++) {
            Console.WriteLine(j + 1 + "->" + Math.Abs(arr[j]));
        }
    }
    
    int count = 0, occur = 0, high = 0, a;
    
    for (a = 1; a < n.length; a++) {
        if (n[a - 1] == n[a]) {
           count++;
           if (count > occur) {
               occur = count;
               high = n[a];
           }
         } else {
            count = 0;
         }
    }
    System.out.println("highest occurence = " + high);
    
        int[] a = {1,2,3,4,5,6,7,7,7};
        int len = a.length;
    
        System.out.println(len);
    
    
        for (int i = 0; i <= len - 1; i++) {
    
            while (a[i] == a[i + 1]) {
                System.out.println(a[i]);
    
                break;
            }
    
    
        }
    
    
    }
    
    int data[] = { 1, 5, 7, 4, 6, 2, 0, 1, 3, 2, 2 };
    Map<Integer, Long> count = Arrays.stream(data)
        .boxed()
        .collect(Collectors.groupingBy(Function.identity(), counting()));
    
    int max = count.entrySet().stream()
        .max((first, second) -> {
            return (int) (first.getValue() - second.getValue());
        })
        .get().getKey();
    
    System.out.println(max);
    
        // TODO Auto-generated method stub
        Integer[] a = { 11, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 4, 1, 2, 2, 2, 2, 3, 4, 2 };
        List<Integer> list = new ArrayList<Integer>(Arrays.asList(a));
        Set<Integer> set = new HashSet<Integer>(list);
        int highestSeq = 0;
        int seq = 0;
        for (int i : set) {
            int tempCount = 0;
            for (int l : list) {
                if (i == l) {
                    tempCount = tempCount + 1;
                }
                if (tempCount > highestSeq) {
                    highestSeq = tempCount;
                    seq = i;
                }
            }
    
        }
    
        System.out.println("highest sequence is " + seq + " repeated for " + highestSeq);
    
    public class MostFrequentIntegerInAnArray {
    
        public static void main(String[] args) {
            int[] items = new int[]{2,1,43,1,6,73,5,4,65,1,3,6,1,1};
            System.out.println("Most common item = "+getMostFrequentInt(items));
        }
    
        //Time Complexity = O(N)
        //Space Complexity = O(N)
        public static int getMostFrequentInt(int[] items){
            Map<Integer, Integer> itemsMap = new HashMap<Integer, Integer>(items.length);
            for(int item : items){
                if(!itemsMap.containsKey(item))
                    itemsMap.put(item, 1);
                else
                    itemsMap.put(item, itemsMap.get(item)+1);
            }
    
            int maxCount = Integer.MIN_VALUE;
            for(Entry<Integer, Integer> entry : itemsMap.entrySet()){
                if(entry.getValue() > maxCount)
                    maxCount = entry.getValue();
            }
            return maxCount;
        }
    }
    
        //count occurences
        for (int i = 0; i < A.length; i++) { 
            if (occuringMap.get(A[i]) != null) {
                int val = occuringMap.get(A[i]) + 1;
                occuringMap.put(A[i], val);
            } else {
                occuringMap.put(A[i], 1);
            }
        }
    
        //find maximum occurence
        int max = Integer.MIN_VALUE; 
        int element = -1;
        for (Map.Entry<Integer, Integer> entry : occuringMap.entrySet()) {
            if (entry.getValue() > max) {
                max = entry.getValue();
                element = entry.getKey();
            }
        }
        return element;
    }
    
    int largest = 0;
    int k = 0;
    for (int i = 0; i < n; i++) {
        int count = 1;
        for (int j = i + 1; j < n; j++) {
            if (a[i] == a[j]) {
                count++;
            }
        }
        if (count > largest) {
            k = a[i];
            largest = count;
        }
    }
    
    public static int getMostCommonElement(int[] array) {
    
        Arrays.sort(array);
    
        int frequency = 1;
        int biggestFrequency = 1;
        int mostCommonElement = 0;
    
        for(int i=0; i<array.length-1; i++) {
            frequency = (array[i]==array[i+1]) ? frequency+1 : 1;
            if(frequency>biggestFrequency) {
                biggestFrequency = frequency; 
                mostCommonElement = array[i];
            }
        }
    
        return mostCommonElement;
    }
    
    import java.util.HashMap;
    import java.util.Map;
    import java.lang.Integer;
    import java.util.Iterator;
    public class FindMood {
        public static void main(String [] args){
        int arrayToCheckFrom [] = {1,2,4,4,5,5,5,3,3,3,3,3,3,3,3};
        Map map = new HashMap<Integer, Integer>();
        for(int i = 0 ; i < arrayToCheckFrom.length; i++){
        int sum = 0;
          for(int k = 0 ; k < arrayToCheckFrom.length ; k++){
              if(arrayToCheckFrom[i]==arrayToCheckFrom[k])
              sum += 1; 
          }
          map.put(arrayToCheckFrom[i], sum);
        }
        System.out.println(getMaxValue(map));
    }
      public static Integer getMaxValue( Map<Integer,Integer> map){
            Map.Entry<Integer,Integer> maxEntry = null;
            Iterator iterator = map.entrySet().iterator();  
            while(iterator.hasNext()){
                Map.Entry<Integer,Integer> pair = (Map.Entry<Integer,Integer>) iterator.next();
                if(maxEntry == null || pair.getValue().compareTo(maxEntry.getValue())>0){
                    maxEntry = pair; 
                } 
            }
            return maxEntry.getKey();
        }
    }
    
    public static void main(String []args){
    
            int primerArray [] = {1,2,1,3,5};
            int arrayTow [] = {1,6,7,8};
    
    
           int numberMostRepetly =  validateArrays(primerArray,arrayTow);
    
           System.out.println(numberMostRepetly);
    
    
    }
    
    
    public static int validateArrays(int primerArray[], int arrayTow[]){
    
        int numVeces = 0;
    
        for(int i = 0; i< primerArray.length; i++){
    
            for(int c = i+1; c < primerArray.length; c++){
    
                if(primerArray[i] == primerArray[c]){
                    numVeces = primerArray[c];
                    // System.out.println("Numero que mas se repite");
                    //System.out.println(numVeces);
                }
            }
    
            for(int a = 0; a < arrayTow.length; a++){
    
                if(numVeces == arrayTow[a]){
                   // System.out.println(numVeces);
                    return numVeces;
                }
            }
        }
    
        return 0;
    
    }