ac,40%求教咋弄​,暴力 83% 求较好的方法

题1.ac
import java.util.Scanner;
public class Main1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] arr = new int[n+1];
for (int i = 0; i < n; i++) {
arr[sc.nextInt()] = 1;
}
sc.close();
for (int i = 0; i < n; i++) {
if (arr[i]==0) {
System.out.println(i);
}
}
}
}

题2.40%求教

import java.util.Scanner;
public class Main2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.close();
if (n == 0) {
System.out.println(0);
}
else if (n > 0) {
int steps = 1;
int pos = 1;
while (pos!=n) {
pos = pos*2;
if (pos>n) {
if ((n -pos/2) <= (pos-n)) {
steps += n -pos/2;
}else {
steps += pos-n+1;
}
break;
}
else {
steps++;
}
}
System.out.println(steps);
}
else {
int steps = 1;
int pos = -1;
while (pos!=n) {
pos = pos*2;
if (pos<n) {
if ((pos/2-n) < n-pos) {
steps += pos/2-n;
}else {
steps += n-pos+1;
}
break;
}
else {
steps++;
}
}
System.out.println(steps);
}
}
}

题3.暴力83%

import java.util.Scanner;
public class Main3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.close();
if (n==1) {
System.out.println(1);
}else {
int index = 1;
for (int i = 2; i <= Integer.MAX_VALUE; i++) {
if (zheng(i)) {
++index;
if (index==n) {
System.out.println(i);
break;
}
}
}
}
}
public static boolean zheng(int t) {
while(t%2 == 0) {
t /= 2;
}while(t%3 == 0) {
t /= 3;
}while(t%5 == 0) {
t /= 5;
}
if (t==1) {
return true;
}
return false;
}
}
#招商银行信用卡中心#
全部评论
其实第二题……while(sum < n) {sum+=2; cnt++;}
点赞 回复 分享
发布于 2018-04-10 21:36
第三题剑指offer原题丑数,要用动态规划
点赞 回复 分享
发布于 2018-04-10 21:11
第二题判断的方法没有完全,建议BFS+记忆剪枝 第三题原题
点赞 回复 分享
发布于 2018-04-10 21:14
第三题我暴力打表的
点赞 回复 分享
发布于 2018-04-10 21:21
是京东吗?大佬
点赞 回复 分享
发布于 2018-04-10 22:49

相关推荐

11-01 20:03
已编辑
门头沟学院 算法工程师
Amazarashi66:这种也是幸存者偏差了,拿不到这个价的才是大多数
点赞 评论 收藏
分享
11-05 07:29
贵州大学 Java
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务