参考代码如下:
@Test public void test(){ // int count = 0; // for(int i=1;i<5;i++) // for(int j=1;j<5;j++) // for(int k=1;k<5;k++){ // if(i!=j&&j!=k&&i!=k){ // count++; // System.out.println(""+i+j+k); // } // } // // System.out.println("count“:"+count); List l = new ArrayList(); l.add(1); l.add(2); l.add(3); l.add(4); getNumCount(l,3,0); } int count=0; private void getNumCount(List<Integer> numList, int median, int currNum) { if (median == 1) { for (int i = 0; i < numList.size(); i++) { int result = currNum + numList.get(i); count++; System.out.println("第" + count + "个数为:" + result); } } else { for (int i = 0; i < numList.size(); i++) { int medianNum = numList.get(i); int result = (int) (currNum + medianNum * Math.pow(10, median - 1)); //传入list的一个拷贝(直接传入上级的list,会出现每个层级剩下的数据错误) List list = new ArrayList(); for (Integer num: numList) { int copyNum = num; if (copyNum != medianNum) { list.add(copyNum); } } getNumCount(list, median - 1, result); } } }
2:有n个数组,每个数组有m个数,从每个数组取一个数,求有多少种组合(组合内顺序不限)
参考代码如下:
public static void main(String[] args) throws ParseException { ArrayList<ArrayList<Integer>> a = new ArrayList<ArrayList<Integer>>(); ArrayList<Integer> b = new ArrayList<Integer>(); b.add(1); b.add(2); b.add(3); ArrayList<Integer> c = new ArrayList<Integer>(); c.add(4); c.add(5); c.add(6); ArrayList<Integer> d = new ArrayList<Integer>(); d.add(1); d.add(2); d.add(3); ArrayList<Integer> e = new ArrayList<Integer>(); e.add(1); e.add(2); e.add(3); a.add(b); a.add(c); a.add(d); a.add(e); StringBuffer s = new StringBuffer(); fun(a,s); System.out.println("count:" + count); } static int count = 0; public static void fun(ArrayList<ArrayList<Integer>> a , StringBuffer s){ if(a.size() == 1){ ArrayList<Integer> list= a.get(0); for(Integer l1:list){ StringBuffer s3 = new StringBuffer(); s3.append(s); s3.append(l1); count++; System.out.println(s3.toString()); } }else{ ArrayList<ArrayList<Integer>> bb = new ArrayList<ArrayList<Integer>>(); bb.addAll(a); ArrayList<Integer> b = bb.get(0); bb.remove(b); for(Integer i :b){ StringBuffer s2 = new StringBuffer(); s2.append(s); s2.append(i); fun(bb,s2); } } }
3:有一张用户表,表中有用户信息,所在企业,创建时间,查询出每个月新增人数前三的企业。
参考sql如下:
select t2.* from (select t1.idCsspOrg, t1.cou, t1.dateCreated, row_number() over(partition by t1.dateCreated order by t1.cou desc) rn from (select t.id_cssp_org idCsspOrg, to_char(t.date_created, 'yyyy-MM') dateCreated, count(0) cou from cssp_user_info t group by to_char(t.date_created, 'yyyy-MM'), t.id_cssp_org) t1) t2 where t2.rn < 4
4.判断一个字符串是否是数值型字符串
public static int fun(String s){ int flag =0; if(s.matches("^[-]?[1-9][0-9]*[.]?[0-9]+$")) flag = 1; return flag; }