挑战数据结构与算法面试题——统计上排数在下排出现的次数

题目来源“数据结构与算法面试题80道”。在此给出我的解法,如你有更好的解法,欢迎留言。

分析:

本题应该是一个确定的问题,即上排的是个数是题目中给定的十个数。

其基本的解题过程为:

  • [10,0,0,0,0,0,0,0,0,0]
  • [9,0,0,0,0,0,0,0,0,1]
  • [8,1,0,0,0,0,0,0,1,0]
  • [7,2,1,0,0,0,0,1,0,0]
  • [6,2,1,0,0,0,1,0,0,0]

其中,循环的终止条件为:数组中的元素不再改变。

本题理解上是给定的数组:[0,1,2,3,4,5,6,7,8,9];如果不是给定的数组,那么解法上会有所不同。

方法:

#define len 10

void get_every_num(int *a, int *b) {
  // 1、初始化
  for (int i = 0; i < len; i++) {
    b[i] = 0;
  }
  // 2、修改值
  int changed = 1;
  while (changed) {
    changed = 0;
    for (int i = 0; i < len; i++) {
      int count = 0;
      for (int j = 0; j < len; j ++) {
        if (a[i] == b[j]) count ++;
      }
      if (b[i] != count) {
        b[i] = count;
        changed ++;
      }
    }
  }
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Python

python ——面向对象进阶

1.staticmethod和classmethod staticmethod  静态方法: 让类里的方法,直接被类调用,就像正常的函数一样 宝宝,男 博博,女...

1987
来自专栏软件开发 -- 分享 互助 成长

堆排序

堆排序是对简单选择排序算法的一种改进,在每次选择最小记录的同时,根据比较结果对其他记录做出相应的调整。 堆是具有下列性质的完全二叉树:每个节点的值都大于(小于)...

1795
来自专栏深度学习思考者

一文搞懂C/C++中指针那些事(上篇)

一 指针变量 1.间接存取        指针变量的值为地址;普通变量的值为数据;其中“*”为指针运算符。&是地址操作符,用来引用一个内存地址。通过在变量名...

20610
来自专栏软件开发 -- 分享 互助 成长

C++ 字符串分割

    java和C#中字符串都可以使用split进行分割,但是C++中却没有这个方法,之前总是自己写一个函数自己进行分割,倒也不麻烦,今天在网上找了类似的函数...

2146
来自专栏IT可乐

Java关键字(四)——final

  对于Java中的 final 关键字,我们首先可以从字面意思上去理解,百度翻译显示如下:

893
来自专栏java工会

Java基础第一阶段知识点,招实习的面试官都在问这些

a) 答:Java源文件被编译成字节码的形式,无论在什么系统环境下,只要有java虚

1211
来自专栏java工会

Java基础第一阶段知识点,招实习的面试官都在问这些

2119
来自专栏西安-晁州

js数组去重

对于如下对象数组 [{id: 0, name: "name1"}, {id: 1, name: "name2"},{id: 1, name: "name2"},...

2330
来自专栏java学习

面试题2(Java 修饰符问题)

编译并运行下面代码,请选择描述正确的项。 public class XiuShiFu{ int i =10; private static float pi=3...

35815
来自专栏专注数据中心高性能网络技术研发

[C++]C++面试知识总结

1.程序运行知识 1.1 内存布局和分配方式 C程序的内存布局如下: ? 静态存储区:存储全局变量和static变量,通常在程序编译期间已经分配好了。 BSS...

3164

扫码关注云+社区