整数数组,一个数字出现了半数以上次,找出这个数字

  1. 遍历,添加一个length/2+1的数组,记录每个数组出现的次数,然后遍历该频率数组,最大的数字就是
  2. 出现了半数以上的话,为什么不两两约去,剩下的那个不就是结果了嘛。当然还要考虑一件事,要是1,1,2,1,哪结果不就是2了嘛?所以当前后两个数字一样的时候就不能直接约去了,复杂度o(n)
看代码:
public class Test {
	int fun(){
		 int array[]={4,1,4,1,4,1,4};
		  int result=array[0],count=0;
		  for(int i=0;i<array.length;i++){
			  if(count==0){
				  result=array[i];
				  count=1;
			  }else if(array[i]==result){
				  count++;
			  }else if(result!=array[i]){
				  count--;
			  }
		  }
		  return result;
	}
  static public void main(String []args){
	fun(); 
  }
}
没有多高深的知识点,但就是为这种泛光的思想惊叹~~
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值