62,628
社区成员
发帖
与我相关
我的任务
分享
for(int i = 0 ;i < lengh/2 + 1; i ++) //只查一半的元素就可以了。
if((count/length)>0.5) //大于0.5
import java.util.ArrayList;
public static Object test(int[] arr){
double length = arr.length;
if(length==0.0){
return new Integer(-1);
}
for(int i = 0 ;i < length; i ++){
int count = 0 ; //出现个数
ArrayList list = new ArrayList();//存放下标
for(int j =i ;j<length; j ++){ //循环比较
if(arr[i] == arr[j]){
count ++;
list.add(j);
}
}
if((count/length)>=0.5){
return list.toString();
}
}
return new Integer(-1);
}
public class SearchInt {
public static void main(String[] args) {
searchInt(new int[]{2,1,2,3,2,2,3,1,2,2});
}
private static void searchInt(int[] testArray){
int elementCount = 0;
int dominator = -1;
ArrayList indexList = new ArrayList();
int[] sortArray = new int[testArray.length];
System.arraycopy(testArray, 0, sortArray, 0, testArray.length);
Arrays.sort(sortArray);
for(int i=0;i<sortArray.length;i++){
if(!(sortArray.length==(i+1)) && sortArray[i]==sortArray[i+1]){
elementCount++;
}else{
if(elementCount>sortArray.length>>1){
dominator = sortArray[i];
break;
}
}
}
for(int i=0;i<testArray.length;i++){
if(testArray[i]==dominator)
indexList.add(new Integer(i));
}
System.out.println(new StringBuffer("支配者-->").append(dominator).append("\t下标为:").append(indexList));
}
}
package test;
import java.util.*;
public class TestHashMap {
public static void main(String[] args) {
HashMap<Integer, Integer> c = new HashMap<Integer, Integer>();
// TestHashMap c = new TestHashMap();
int[] a = new int[] { 3, 4, 6, 2, -1, 3, 3, 3, 3, 2, -1, 6, 3, 3, 3 };
int s = 1;
for (int i = 0; i < a.length; i++) {
if (!c.containsKey(a[i])) {
c.put(a[i], s);
for (int j = i + 1; j < a.length; j++)
if (a[i] == a[j]) {
s++;
c.put(a[i], s);
}
}
s = 1;
}
System.out.println(c.entrySet());
System.out.println(c.values());
int max = 0, temp = 0, j = 0, value = 0;
Iterator<Integer> it = c.keySet().iterator();
while (it.hasNext()) {
temp = it.next();// 得键
j = c.get(temp);// 得值
if (max < j) {
max = j;
value = temp;
}
}
System.out.println("出现的次数" + max + " " + "数组上的值" + value);
if ((double) max / a.length < 0.5)
System.out.println("没有支配者");
else {
System.out.println("数组上的位置:");
for (int i = 0; i < a.length; i++)
if (a[i] == value)
System.out.print(" "+i);}
}
}
import java.util.*;
public class Test {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
Map<Integer, List> listNum = new HashMap<Integer, List>();
int[] num = {3,4,3,2,-1,3,3,3};
// 用来存储数字的信息,首位置用来记录出现次数,
// 后面用来记录出现位置下标
for(int i=0; i<num.length; i++) {
//判断listNum里面有这个值
if(listNum.get(num[i]) != null) {
//如果有在原来的基础上values加1即出现了几次
List<Integer> listTemp = (List)listNum.get(num[i]);
listTemp.add(i);
listNum.put(num[i], listTemp);
} else {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(i);
listNum.put(num[i], list);
}
}
//下面是遍历
Set set = listNum.entrySet();
Iterator it = set.iterator();
int result = -1;
while(it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
Object key = entry.getKey();
Object value = entry.getValue();
List listTemp = (List)value;
if(listTemp.size() > num.length/2.0 ) {
System.out.print((Integer)key +
"是支配者,出现了" + listTemp.size() + "次");
result = 1;//找到支配者
Iterator itList = listTemp.iterator();
while(itList.hasNext()) {
System.out.print("\t" + (Integer)itList.next());
}
}
}
if(result == -1) {
System.out.println("未找到支配者");
}
}
}
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ControlNum {
public static void main(String[] args) {
int[] data = { 1, 3, 3, 4, 5, 6, 3, 3, 3, 3 };
Iterator itor = findController(data).iterator();
while (itor.hasNext()) {
System.out.print(itor.next() + " ");
}
}
public static List<Integer> findController(int[] data) {
List<Integer> rlist = null;
List<Integer> list = new ArrayList<Integer>();
final double x = 0.5;
for (int i = 0; i < data.length; i++) {
int count = 0;
list.removeAll(list);
for (int j = i; j < data.length; j++) {
if (data[i] == data[j]) {
count++;
list.add(j);
}
}
if (count / (double)data.length > x) {
rlist = list;
break;
} else {
list.removeAll(list);
list.add(-1);
rlist = list;
}
}
return rlist;
}
}