01.算法设计(二)
来源:互联网 发布:安卓扫街软件 编辑:程序博客网 时间:2024/06/06 01:57
/** * 题设:现在有0-99,共计100个整数,各不相同,将所有数放入一个数组,随机排布, * 数组长度100,将里面任意一个数字替换成0-99的另一个数字(唯一重复的数字) * 问题:将这个重复的数字找出来 */
同样的这段代码, 也可以解决01.算法设计(一)的问题。
package test6;import org.junit.Test;public class test6 { @Test public void test1(){ //组装数据 int[] arr = new int[100]; for(int i=0;i<=99;i++){ arr[i] = i; } //随机打乱数组的排列顺序100次。 for(int i=0;i<100;i++){ int num1 = (int) (Math.random()*100); int num2 = (int) (Math.random()*100); int temp = arr[num1]; arr[num1] = arr[num2]; arr[num2] = temp; } //将其中的一个数,替换成另一个 int n1 = (int) (Math.random()*100); int n2 = (int) (Math.random()*100); if(n1==n2){//如果两个值相同, 在随机生成一次,保证题目正确 n1 = (int) (Math.random()*100); } arr[n1] = arr[n2]; //查看我们题目的数组是什么样的 for(int i=0;i<arr.length;i++){ System.out.print(arr[i]+","); } /** * 使用方案一,同样可以解决 */ /** * 方案二:创建一个辅助的数组空间(相同长度),里面元素全都是0 * 2.遍历原始数组,使用里面的数组作为新数组的下标,进行自加 * 如果出现多次 那么值,肯定>1 */ //由于用的是数组,数组是需要消耗内存空间的,所以,这种方式,加快了速度, 但是消耗了内存 int[] newArr = new int[100]; for(int i=0;i<arr.length;i++){ newArr[arr[i]]++; if(newArr[arr[i]]>1){ System.out.println("重复的数字是:"+arr[i]); } } }}
下面是原理图:
阅读全文
0 0
- 01.算法设计(二)
- 算法设计与分析(二)分治
- 算法设计与分析复习(二):算法设计策略-分治法
- 算法设计与分析复习(二):算法设计策略-贪心法
- 算法分析与设计(四)动态规划(二)
- 算法设计方法(二)——分而治之
- 算法设计与分析(二)动态规划
- 算法设计与应用基础作业(二)
- 算法设计周记(二)--Jump Game
- 01.算法设计(一)
- 图像算法中的设计模式(二):用控制器设计模式实现功能模块间通信
- 算法设计与分析题目练习二:八皇后问题(经典回溯算法)
- 算法分析与设计——递归算法(二)1.汉罗塔问题
- 二十四点游戏求解算法设计
- MapReduce 算法设计(二)--- Pairs 和 Stripes
- 算法设计题目二 冒泡排序改进
- MapReduce 算法设计(二)--- Pairs 和 Stripes
- 算法二(贪心算法)
- AJAX POST请求中参数以form data和request payload形式在servlet中的获取方式
- json-lib的json转换
- centos7.1下虚拟网卡配置方法dns.ip地址配置及更改和添加samba服务器登陆用户的密码命令
- php静态成员方法和静态的成员属性的使用方法
- MFC学习笔记(1)--对话框
- 01.算法设计(二)
- java进阶知识梳理
- easyui月份控件和清空按钮
- 【第五届蓝桥杯】分糖果
- ThinkPHP中数据库操作返回值总结
- Java生成包含大写字母,小写字母以及数字的无重复随机密码
- js中面向对象的写法
- ionic安装和降低版本的方法
- ROS和MATLAB通信的一个测试