一、题目信息:
示例:int[] array = {3,2,6,3,1,9,2,6,1}; 出现1次的数字就是 9。空间复杂度O(1),时间O(n)平方,不能修改数组内容。不能对数组进行排序。
二、题解
不能排序修改原数组,意味着不能用异或的方式,空间复杂度o1,就不能用哈希表,但是时间是0n的平方,那就两个for循环解决吧
三、代码实现
class solution{
public static int singleNumer(int []array){
int result=0;
int count=0;
for (int i = 0; i <array.length ; i++) {
int ans=array[i];
for (int j =0; j <array.length ; j++) {
if(ans==array[j]){
count++;
}
}
if(count==1){
result=array[i];
break;
}
count=0;
//如果这个for循环能走完,就说明这个数只出现了一次
}
return result;
}
public static void main(String[] args) {
int[] array = {1,1,3,5,2,5,3,6,3,6};
System.out.println(singleNumer(array));
}
}
四、其他题目分享
怎么把i am a student逆置成student a am i?面试题逆置字符串讲解
什么?动态规划10行求出连续子数组的最大和 剑指offer-42讲解
剑指 Offer 39. 数组中出现次数超过一半的数字 简单易懂14行搞定 。人人皆可会
LeetCode 24:两两交换链表中的节点,1662. 检查两个字符串数组是否相等
剑指 Offer 58 - II. 左旋转字符串的三种解法一起看看吧!!