7个回答

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class Test {

``````public static void main(String[] args) {
int i,j,k,m,n,t1,t2,t3;
Set total=new HashSet();
for(int t=1;t<10;t++) {
}
Set set=new HashSet();
Set lastThree=new HashSet();
for(i=1;i<4;i++) {
for(j=1;j<10;j++) {
if(j==i){ continue;}
for(k=1;k<10;k++) {
if(k==i||k==j) { continue;}
m=3*(i*100+j*10+k);
if(m>987){set.remove(k);continue;}//如果已超出范围，没必要再往下判断
t1=m%10; if(t1==0) {set.remove(k);continue;} //个位数
t2=(m%100)/10; if(t2==0) {set.remove(k);continue;} //十位数
t3=m/100;  if(t3==0) {set.remove(k);continue;}//百位数
if(set.contains(t1)){set.remove(k);continue;}
if(set.contains(t2)) {set.remove(k);set.remove(t1);continue;}
if(set.contains(t3)) {set.remove(k);set.remove(t1);set.remove(t2);continue;}
//System.out.println("  "+i+j+k+"   "+m);
total.removeAll(total);
for(int q=1;q<10;q++) {
}
total.removeAll(set);
int[] s=new int[3];
Iterator iterator=total.iterator();
int p=0;
while(iterator.hasNext()) {
s[p]=Integer.parseInt(iterator.next()+"");
p++;
}
n=s[0]*100+s[1]*10+s[2];
if(n==2*(i*100+j*10+k)) { System.out.println(i+""+j+""+k+"    "+n+"    "+m);}
n=s[0]*100+s[2]*10+s[1];
if(n==2*(i*100+j*10+k)) { System.out.println(i+""+j+""+k+"    "+n+"    "+m);}
n=s[1]*100+s[0]*10+s[2];
if(n==2*(i*100+j*10+k)) { System.out.println(i+""+j+""+k+"    "+n+"    "+m);}
n=s[1]*100+s[2]*10+s[0];
if(n==2*(i*100+j*10+k)) { System.out.println(i+""+j+""+k+"    "+n+"    "+m);}
n=s[2]*100+s[0]*10+s[1];
if(n==2*(i*100+j*10+k)) { System.out.println(i+""+j+""+k+"    "+n+"    "+m);}
n=s[2]*100+s[1]*10+s[0];
if(n==2*(i*100+j*10+k)) { System.out.println(i+""+j+""+k+"    "+n+"    "+m);}
set.remove(t1);
set.remove(t2);
set.remove(t3);
set.remove(k);
}
set.remove(j);
}
set.remove(i);
}
}
``````

}

192 384 576
219 438 657
273 546 819
327 654 981

1. 循环从111 -> 333的数字，遇到有0的continue
2. [N, N * 2, N * 3] 这样就可以作为一个正确序列了

package com.A;

public class InterViewDemo {
public InterViewDemo() {
int i, j, k, l;

``````    for (i = 111; i < 999; i++) {
j = i / 100;// 得到三位数的百位数
k = i / 10 - j * 10;// 得到三位数的十位数
l = i - j * 100 - k * 10;// 得到三位数的个位数
if (j % 3 == 0 && k % 2 == 0 && k != 0 && l != 0)// 由于在111到999之间有含有零的数，所以十位数和各位数不能等于零
if (j != k && j != l && k != l)//个位和十位以及百位数不能相等
System.out.println(i);

}

}

public static void main(String[] args) {

new InterViewDemo();

}
``````

}

1** - 2** - 3**
1** - 2** - 4**

1** - 3** - 4**
1** - 3** - 5**

2** - 4** - 6**
2** - 4** - 7**

2** - 5** - 7**
2** - 5** - 8**

3** - 6** - 9**