蓝桥杯打卡(220114)

思路一:桶排序,但是每个数组元素取值范围未定,放弃

思路二:先用冒泡或快速排序法排序,然后依次两两比较。若相等,输出true

思路三:暴力比较,

首先来说思路二的具体代码实现

按照思路第一步需要进行排序,就我个人而言,更加喜欢快速排序(最近刚刚学会),虽然在力扣提交不了。红红火火恍恍惚惚哈哈。(当然你也可以使用冒泡排序,或者其他排序,程序的结构是唯一的,但过程是多姿多彩的)

void quicksort(int left, int right)
{
	int i, j, t, temp;
	if (left > right)
		return;
	temp = nums[left];
	i = left;
	j = right;
	while (i != j)
	{
		while (nums[j] >= temp && i < j)
			j--;
		while (nums[i] <= temp && i < j)
			i++;
		if (i < j)
		{
			t = nums[i];
			nums[i] = nums[j];
			nums[j] = t;
		}
	}
	nums[left] = nums[i];
	nums[i] = temp;
	quicksort(left, i - 1);
	quicksort(i + 1, right);

}

排好序后就简单了,进行1v1的依次比较,只要一出现一组前后一样的两个数,返回true,终止循环,输出true。如没有前后一样的数,输出false。

for (int i = 0; i < n - 1; i++)
	{
		if (nums[i] == nums[i + 1])
		{	
			 return true;
		}else{
			 return false;

	        }
    }

再来说思路三,具体实现还没有写出来。现在仅仅描述思路。

再次创建一个大小为numsSize的数组,先把nums中的第一个元素放置于新建数组的第一位,再从nums中取出第二个数组元素,与新建数组中现有的数组元素依次比较,如不相等,放入下一个元素中。emmmmm,我用Excle做个图吧,不然不好理解

然后依次比较,直到有数组nums中有一个数与new中的某个数相等,返回true,程序停止。或者nums中的numsSize个数全部移动到数组new中还没有一个相同的数,程序返回false,结束。

代码手打中,有时间更新。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值