Random 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。

做法1:

List<int> list = new List<int>();

Random rand = new Random();

 while (list.Count < 100)

           
{

         
      int
number = rand.Next(1,
101);//>=1,<101

if (!list.Contains(number))//如果list中已经含有这个数,则不插入

{

list.Add(number);

}

}

foreach (int i in list)

{

Console.WriteLine(i);

}

做法2:

先把1-100这100个数按顺序放入数组arr,再重复100次下面的操作,生成两个介于 >=0,<100
之间的随机数m、n,颠倒arr[m]和arr[n]的数。

int[] arr = new int[100];

//把100个数顺序放入

for (int i = 0; i < 100; i++)

{

arr[i] = i + 1;

}

Random rand = new Random();

for (int i = 0; i < 100; i++)

{

//随机生成两个位置

int m = rand.Next(0, 100);

int n = rand.Next(0, 100);

//颠倒两个位置

int temp = arr[m];

arr[m] = arr[n];

arr[n] = temp;

}

时间: 2024-08-05 09:35:04

Random 产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复。的相关文章

产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复

写在前面 前天去面试了,给出的笔试中有这样的一道算法题,产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复 当时,脑子一热,也没想那么多,就用集合实现了一下,经面试官提醒,发现还有更好的方式来实现. 代码 首先看一下这样一段代码 1 namespace Wolfy.RandomDemo 2 { 3 class Program 4 { 5 static void Main(string[] args) 6 { 7 List<int> lst = new List<i

黑马程序员——java--将一个int数组转换成一个字符串

将一个int 数组转换成字符串 并输出在控制台上 //将一个int 数组转换成一个字符串 public class IntToStringDemo { public static void main(String[] args) { // TODO Auto-generated method stub //定义一个int类型的数组 int[] i ={4,5,8,6,5,8,7,4,5}; //调用自定义方法将int数组的方法转换成字符串 toStringMethod(i); } private

Java -- 给定一个int数组,拼接出最大数值

public class ZhiJieTiaoDong { /* 给定一个数组:组合成最大数值 */ public String szpj(int[] args){ if(null == args || args.length == 0){ return ""; } StringBuilder stringBuilder = new StringBuilder(); int[] yxsz = compareSZ(args); for (int i = args.length - 1;

怎么把一个int数组转化为char型数组??

/* 234 Press any key to continue */ #include <stdio.h> int main() { int i,num = 234,n; char ch,s[10]; for(n = 0; num; ++n) { s[n] = num % 10 + '0'; num /= 10; } s[n] = '\0'; for(i = 0; i < n / 2; ++i) { ch = s[i]; s[i] = s[n - 1 - i]; s[n - 1 - i

查看一个int数组里边的每个数字出现过几次

public void aa() { int[] a = { 1, 2, 3, 4, 5, 4, 3, 2, 1 }; Hashtable ht = new Hashtable(); for (int i = 0; i < a.Length; i++) { if (ht.ContainsKey(a[i])) { ht.Add(a[i], (int)ht[i] + 1); } else { ht.Add(a[i], 1); } } string str = ""; foreach

signal num一个int数组,里面数值都是成对出现,只有一个是单独的,找出单独者。360ms

public class Solution { public int singleNumber(int[] nums) { int ret = nums[0]; for (int i = 1; i < nums.length; i++) { ret ^= nums[i]; } return ret; } }

有一个有序数组,要求将一个新输入的数插入到数组中并保证插入新数后,数组仍有序。

因为数组在初始条件下是有序的,而题目要求插入新数后数组仍有序.因此,首先应该在数组中找到插入位置,然后将该位置原有的数以及该位置后面的数都依次后移一个位置,为新插入的数值空出一个位置. #include<stdio.h> int main() { int a[11] = {2, 4, 8, 15, 20, 36, 49, 51, 78, 96}; int temp1, temp2, number, end, i, j; printf("The original arry is:\n&

返回一个整数数组最大子数组的和

开始时间:14:00 结束时间:17:   20 要求: 1,程序可以处理1000个元素: 2,每个元素是int32类型的: 3,整型数组有正数也有负数: 4,可以求出所有子数组的和的最大值,时间复杂度为O(n) 5,小组成员:于芳娜,张素颖 设计思路 1, 如果不考虑时间复杂度,我们可以枚举出所有子数组并求出他们的和.不过非常进憾的是,由于长度为n的数组有O(n^2)个子数组,而且求一个长度为n的数组的和的时间复杂度为O(n). 因此这种思路的时间是O(n^3). 2, 很容易理解,当我们加上

返回一个整数数组最大子数和。(新)

一.要求: (1)输入一个整形数组,数组里有正数也有负数. (2)数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和. (3)如果数组A[0]--A[j-1]首尾相邻,允许A[i-1],......A[n-1], A[0]--A[j-1]之和最大. 二.设计思想: 如果数组首尾相连,那么每一个元素都可以当成是开头即从A[n]开始,到A[n-1]结束,这样的话,就相当用剪子在一开始的数组中的元素的前一位剪开.这样的话,可以建立新的三个数组,前两个数组分别盛放剪开的两部分,第三个数组则是