【数学/数组】的【排序/转换】问题,高分求最佳算法
一个巨型字符型数组(赋值长度为8字节),赋值规律为:
从 00000000 开始,按自然数递增,直至 99999999
如果将每个值的按0-9的【升序】的顺序重新排序,将会分别得到它们的1个【新值】
比如:
原值 --> 新值
"00001234" --> "00001234"
"00012340" --> "00001234"
"00123400" --> "00001234"
"01234000" --> "00001234"
"12340000" --> "00001234"
"23400001" --> "00001234"
"34000012" --> "00001234"
"40000123" --> "00001234"
很显然,当所有的【原值】经过排序转换后,有N多的【新值】都是完全相同的
--------------------------------------------
需要解决的问题有两个,求它们的最佳算法
【问题1】
求这个巨型数组的所有【不同新值】的个数(及具体算法)
如果在排序的过程中,只保留最新出现的某个【新值】(也是字符型,长度8字节)
之后出现的与它完全相同的【新值】则全部过滤掉
也就是说,从 00000000 --> 99999999,一共存在多少个不同的【新值】
【问题2】
假定所有【不同新值】的个数是N个,N其实就是【问题1】的答案
然后将这【N个新值】按【从小到大】的顺序进行排序
这样每个【新值】都会得到1个【编号X】
那么,
如何将 00000000 --> 99999999 每个排序出来的【新值】
用其对应的【编号X】进行标记?
比如:已经存在某个库,库的记录数就是99999999+1条(00000000 --> 99999999)
如何将这个库里每条记录的【“新值编号”字段】的内容,更新为【编号X】
或者,对于数组里的任何1个【原值】,比如 “56892226”
它的【新值】就是 “22256689”
如何得到 “22256689” 的【编号X】
--------------------------------------------
我的水平实在很菜,对于【问题2】,只想到了循环替换
但因为数组记录数巨大,效率实在太低了
有请高手赐教高效算法
--------------------------------------------
另:提问时【给分框】的上限只有100分,如何给更多分?
...全文
相关推荐
JS实现根据数组对象的某一属性排序操作示例
此外,本文提到的JavaScript操作技巧总结,如查找算法、错误调试、数据结构与算法、遍历算法、数学运算等,都是JavaScript编程中不可或缺的部分。
华为OD机试 新系统 双机位C卷 往年真题 机考题库(持续收录中)以及算法考点详解(Python/JS/C/C++)
刷的越多,抽中的概率越大,每一题都有详细的答题思路、详细的代码注释发现新题目,随时更新。
python对数组进行排序,并输出排序后对应的索引值方式
在Python编程中,熟练掌握这些功能能够帮助我们更好地处理各种复杂的数据结构和问题。
c++简单习题求两个整数的最大公约数和最小公倍
、数组排序以及数据类型转换等。
vb例程(含24点,swap,排序,数组,杨辉三角,矩阵转换,排序,素数检测,哥德巴赫猜想验证等示例代码)
理解如何声明、初始化和遍历数组,以及如何应用排序算法到数组上,对于编程能力提升至关重要。5. **杨辉三角**:这是一种数学模式,每个数是其上方两数之和。


