一些集合面试题
2016-02-01 22:15
477 查看
package com.fly; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; public class Test { public static void main(String[] args) { int[] a={3,5,6,7,2,3,32,12,34,5,256}; int[] b={1,2,3,4,5,6,7}; System.out.println(Arrays.toString(union(a,b))); System.out.println(Arrays.toString(allin(a,b))); System.out.println(Arrays.toString(minus(a,b))); double[] da={1,2,3,4,5}; double[] db={1,1,1,1,1,1}; moving(da, db, 3); moving2(da, db, 3); } public static Object[] union(int[] a1,int[] a2){ Set<Integer> set=new HashSet<Integer>(); for(int i=0;i<a1.length;i++){ set.add(a1[i]); } for(int j=0;j<a2.length;j++){ set.add(a2[j]); } return set.toArray(); } public static Object[] allin(int[] a1,int[] a2){ Map<Integer,Boolean> map=new HashMap<Integer,Boolean>(); for(int i=0;i<a1.length;i++){ if(!map.containsKey(a1[i])){ map.put(a1[i], Boolean.FALSE); } } for(int i=0;i<a2.length;i++){ if(map.containsKey(a2[i])){ map.put(a2[i], Boolean.TRUE); } } List<Integer> list=new ArrayList<Integer>(); for(Iterator<Integer> i=map.keySet().iterator();i.hasNext();){ Integer a=i.next(); if(map.get(a)){ list.add(a); } } return list.toArray(); } public static Object[] minus(int[] a1,int[] a2){ List<Integer> list=new LinkedList<Integer>(); List<Integer> history=new LinkedList<Integer>(); for(int i=0;i<a1.length;i++){ if(!list.contains(a1[i])){ list.add(a1[i]); } } for(int i=0;i<a2.length;i++){ if(list.contains(a2[i])){ history.add(a2[i]); list.remove(a2[i]); }else{ if(!history.contains(a2[i])){ list.add(a2[i]); } } } return list.toArray(); } public static void moving(double[] a,double[] b,int k){ int n=a.length>b.length?b.length:a.length; for(int i=0;i<n;i++){ int count=0; double total=0; for(int j=i;count<k&&j>=0;j--,count++){ total=total+a[j]; } System.out.println("total--->"+total); System.out.println("count--->"+count); b[i]=total/count; } System.out.println(Arrays.toString(b)); } public static void moving2(double[] a,double[] b,int k){ int n=a.length>b.length?b.length:a.length; for(int i=0;i<n;i++){ int count=0; double total=0; if(i<k){ for(int j=i;count<k&&j>=0;j--,count++){ total=total+a[j]; } System.out.println("total--->"+total); System.out.println("count--->"+count); b[i]=total/count; }else{ b[i]=(b[i-1]*k+a[i]-a[i-k])/k; } } System.out.println(Arrays.toString(b)); } }
相关文章推荐
- 成为优秀程序员的10个有效方法-要有自己的认识
- 什么样的程序员适合去创业公司
- 程序员努力提升自己,循序渐进学编程
- Android工程师面试题大全
- Andorid-15k+的面试题。
- 给推荐几个对程序员来说神器般存在的软件
- java详细面试题
- 前端面试-浏览器渲染机制
- 程序员必须知道的10大基础实用算法及其讲解
- 机器学习&数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)
- 职场三问
- ios面试题 看了就知道哪方面需要加强上机练习
- 面试
- Java面试笔试题大汇总(最全+详细答案)
- 论一个程序员的自我修养
- 黑马程序员-----------检查错误是门很深的学问
- 跟面试官讲Binder(零)
- 黑马程序员-----------返璞归真
- 黑马程序员-----------2.1所感
- Android 常见面试 知识点小结