目录
选择题
- name是Person的私有变量,其子类虽然继承,但是不能使用,private只能在本类中使用
- 超类表示是父类的意思
编程题
import java.util.*; import java.lang.*; public class Main{ public static void main(String []args){ Scanner sc=new Scanner(System.in); String str=sc.nextLine(); int i=0; String max=""; String count=""; while(i<str.length()){ char c=str.charAt(i); if(c<='9'&& c>='0'){ count+=c; }else{ if(count.length()>max.length()){ max=count; }else{ count=""; } } i++; } if(count.length()>max.length()){ max=count; } System.out.println(max); } }
- 用count存储连续的数字字符串,max存储最大的数字字符串
import java.util.*; public class Solution { public int MoreThanHalfNum_Solution(int [] array){ Arrays.sort(array); int mid=(array.length/2); return array[mid]; } }
- 第一种解法,下标索引为array.length/2的值肯定是众数
import java.util.*; public class Solution { public int MoreThanHalfNum_Solution(int [] array) { int result=array[0]; int time=1; for(int i=1;i<array.length;i++){ if(time!=0){ if(result==array[i]){ time++; }else{ time--; } }else{ result=array[i]; time=1; } } return result; } }
- 第二种思路就是如果有一个数是众数,那么拿众数的次数跟其他所有数来相减,最后众数的次数肯定大于0
参考多数投票算法的思想
先随意确定一个候选元素,cnt是候选元素的计数,当遇到一个跟候选元素不同的元素时,两者数量上抵消一个,cnt减1。一旦cnt变成0,就重新找一个候选元素。
当遇到一个与候选元素不同的元素时,就要抵消。
对于候选元素和当前元素,可能存在两种情况:
- 两者中有一个正好是主要元素;
- 两者都不是主要元素。
对于情况1,抵消过后,主要元素还是主要元素;对于情况2,可以说主要的元素的地位得到了巩固。所以算法最终能找到主要元素。