在找水王的过程中,一般会用到二重循环,这样使得时间复杂度会变大,那么我们能不能用一次遍历将水王找出来呢?
源码:
package test;
public class shuiwang1 {
/**
* @param args
*/
public static void main(String[] args)
{
String[] ids = {"003","001","dc","001","001","001","002"};
System.out.println(find(ids));
}
public static String find(String[] id)
{
int n=id.length;
String findid=null;
int i,cishu;
for(i=cishu=0;i<n;i++)
{
if(cishu==0)
{
findid=id[i];
cishu=1;
}
else
{
if(findid==id[i]) cishu++;
else cishu--;
}
}
return findid;
}
/**
* @param args
*/
public static void main(String[] args)
{
String[] ids = {"003","001","dc","001","001","001","002"};
System.out.println(find(ids));
}
public static String find(String[] id)
{
int n=id.length;
String findid=null;
int i,cishu;
for(i=cishu=0;i<n;i++)
{
if(cishu==0)
{
findid=id[i];
cishu=1;
}
else
{
if(findid==id[i]) cishu++;
else cishu--;
}
}
return findid;
}
}