参考代码如下:
@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;
}