思路一:桶排序,但是每个数组元素取值范围未定,放弃
思路二:先用冒泡或快速排序法排序,然后依次两两比较。若相等,输出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,结束。
代码手打中,有时间更新。