给你10分钟时间,根据上排给出十个数,在其下排填出对应的十个数要求下排每个数都是先前上排对应那个数在下排十个数中出现的次数。
上排的十个数如下:
【0,1,2,3,4,5,6,7,8,9】
==============================================================================
import java.util.Arrays; public class Number { private int[] top; private int[] bottom; private int length; private boolean success; public Number(int length){ this.length=length<7?7:length; //length<6无解 this.success = false; this.top=new int[this.length]; this.bottom=new int[this.length]; for(int i=0;i<this.length;i++) top[i]=i; } private int getFrequecy(int num) {//// num在bottom[]中出现的次数 int count = 0; for (int i = 0; i < this.length; i++) { if (this.bottom[i] == num) count++; } return count; } // set next bottom private void setNextBottom() { boolean reB = true; for (int i = 0; i < this.length; i++) { int frequecy = getFrequecy(this.top[i]);//top[i]在bottom[]的出现次数 if (this.bottom[i] != frequecy) {//若bottom[i]不等于frequency this.bottom[i] = frequecy;//修正 reB = false; } } this.success = reB; } public int[] getBottom() { int i = 0; System.out.println("初始bottom:"+toString()); while (!this.success) { i++; setNextBottom(); System.out.println("修正" + i + "次得到结果:"+toString()); } return this.bottom; } @Override public String toString() { return "[success="+success + ",bottom=" + Arrays.toString(bottom) + "]"; } }
运行:
@Test
public void testNumber() {
Number que=new Number(10);
que.getBottom();
}
结果如下:
初始bottom:[success=false,bottom=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
修正1次得到结果:[success=false,bottom=[10, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
修正2次得到结果:[success=false,bottom=[9, 0, 0, 0, 0, 0, 0, 0, 0, 1]]
修正3次得到结果:[success=false,bottom=[8, 1, 0, 0, 0, 0, 0, 0, 1, 0]]
修正4次得到结果:[success=false,bottom=[7, 2, 1, 0, 0, 0, 0, 1, 0, 0]]
修正5次得到结果:[success=false,bottom=[6, 2, 1, 0, 0, 0, 1, 0, 0, 0]]
修正6次得到结果:[success=true,bottom=[6, 2, 1, 0, 0, 0, 1, 0, 0, 0]]
相关推荐
《字节跳动最爱考的 64 道算法题1》这篇文章是关于准备面试时,特别是针对字节跳动等大厂面试所必备的算法题目的汇总。作者通过自己的面试经历,精选了64道高频率出现的算法题,并按照不同的数据结构和算法类型进行...
Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法集题大全Java算法...
算法 ,简单 入门 LeetCode网站开放的简单算法题,用于平时检验自己的算法能力,程序设计.
共有7个 很不错的java算法题 共有7个 很不错的java算法题 共有7个 很不错的java算法题 共有7个 很不错的java算法题 共有7个 很不错的java算法题 共有7个 很不错的java算法题
算法题算法题算法题算法题
根据给定文件的信息,我们可以提炼出与ACM算法题及经典算法库相关的多个知识点。以下是对这些知识点的详细解析: ### ACM国际大学生软件大赛简介 ACM(Association for Computing Machinery)国际大学生软件大赛是...
【标题】"经典算法题大全"揭示了这个压缩包的核心内容——它是一个包含大量算法问题的集合,专门针对像蓝桥杯这样的编程竞赛。蓝桥杯是中国一项知名的计算机编程比赛,旨在提升参赛者的算法设计与实现能力。这些题目...
华为OD真机算法题(含答案) 知识点一、货币兑换问题 在华为OD真机算法题中,出现了货币兑换问题,即如何根据给定的汇率实现货币的最大兑换和最小兑换。这种问题可以用到 Graph Theory 中的最短路径算法来解决。 ...
全排序、二分查找、冒泡排序、阶乘、最大公约数、最小公倍数、...这是里面包含的算法,本人在准备笔试的时候找的,算法尽量采用最优的。 所有的代码均经过测试,个人觉得没有问题,如果哪位大牛找到错误,欢迎批评指正
C语言算法题合集.zipC语言算法题合集.zipC语言算法题合集.zipC语言算法题合集.zipC语言算法题合集.zipC语言算法题合集.zipC语言算法题合集.zipC语言算法题合集.zipC语言算法题合集.zipC语言算法题合集.zipC语言算法...
中山大学遗传算法基本习题
通过解决这些算法题,开发者可以锻炼逻辑思维,理解和掌握数据结构,如数组、链表、栈、队列、树、图等,以及排序、搜索、图论、动态规划等核心算法。 在JAVA经典算法40题.doc中,可能包含的题目类型有递归、分治、...
Java经典算法题是程序员在开发过程中常常需要面对的挑战,它们可以帮助我们提升编程思维,优化问题解决能力,尤其是在处理复杂数据结构和高效计算时显得尤为重要。这个压缩包中包含了一份名为"JAVA经典算法40题.doc...
在这个“java常见算法题解析大全”中,你将找到一系列涵盖不同难度级别的算法问题,旨在帮助Java开发者提升技能,增强解决问题的能力。 首先,让我们了解一下折半查找(Binary Search)算法。这是一种在有序数组中...
"常见面试算法题"这一主题涵盖了编程面试的核心部分,旨在帮助求职者准备这些关键的挑战。下面将详细讨论相关知识点。 1. **算法基础**:算法是解决问题的步骤集合,面试中常见的包括排序算法(如冒泡、选择、插入...
1.1 字符串题特点 1.2 需要掌握的概念 1.3 基本操作 2.1 规则判断 2.2 数字运算 2.3 与数组操作有关的类型 2.4 字符计数 2.5 动态
软件工程师经典笔试算法题 软件工程师经典笔试算法题是软件工程师面试中经常出现的算法笔试题,这篇文章将从六个方面对软件工程师经典笔试算法题进行详细的讲解。 一、将一整数逆序后放入一数组中 这个算法题考察...
在IT行业的面试中,算法题是衡量候选人技术实力的重要标准之一。这些题目通常涉及数据结构、排序、查找、图论等多个领域,旨在测试应聘者的逻辑思维能力、问题解决能力和编程技巧。以下是一些常见的面试算法题及其...
智能优化算法是现代计算技术中的一个重要分支,它模拟自然界中生物进化、群体行为或物理过程,来解决复杂问题的优化问题。这些算法广泛应用于工程设计、机器学习、数据分析等领域,因其能够处理非线性、多目标和高...
C++面试题笔试题C++ 数据结构算法笔试题资料合集: 50个C、C++面试题.pdf C++ 数据结构、算法笔试题.docx C++基础面试题.docx C++开发工程师面试题库.docx C++技能测试试卷一及答案.docx C++技能测试试卷二及答案....