爱奇艺编程90%,100%,60%,想知道错哪里了,代码如下

第一题:
import java.util.Scanner;
public class First {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int x1,k1,x2,k2;
x1 = scanner.nextInt();
k1 = scanner.nextInt();
x2 = scanner.nextInt();
k2 = scanner.nextInt();
int t = func(x1, k1, x2, k2);
if(t == 1)
System.out.println("Greater");
else if(t == -1)
System.out.println("Less");
else
System.out.println("Equal");
}
public static int func(int a,int b,int c,int d){
int flag = 0;
StringBuilder sBuilder1 = new StringBuilder();
StringBuilder sBuilder2 = new StringBuilder();
for(int i=0;i<b;i++){
sBuilder1.append(String.valueOf(a));
}
for(int i=0;i<d;i++){
sBuilder2.append(String.valueOf(c));
}
if(sBuilder1.length()>sBuilder2.length())
return 1;
else if(sBuilder1.length()<sBuilder2.length())
return -1;
else{
int len = sBuilder1.length();
for(int i=0;i<len;i++){
if((int)sBuilder1.charAt(i)>(int)sBuilder2.charAt(i)){
flag = 1;
break;
}
else if((int)sBuilder1.charAt(i)<(int)sBuilder2.charAt(i)){
flag = -1;
break;
}
}
if(flag == 1)
return 1;
else if(flag == 1)
return -1;
else
return 0;
}
}
}
第二题:
import java.util.Scanner;
public class Second {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
char[] arr = str.toCharArray();
Stack<Character> stack = new Stack<>();
int cnt = 0, max =0;
for(int i=0;i<arr.length;i++){
if(arr[i] == '('){
stack.push(arr[i]);
}
if(arr[i] == ')' && stack.peek() == '('){
if(stack.size() > max)
max  = stack.size();
stack.pop();
}
}
System.out.println(max);
}
}
第三题(超时):
import java.util.Scanner;
public class Third {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int m = scanner.nextInt();
int cnt = 0;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
double tmp = Math.sqrt(i)+Math.sqrt(j);
double t = tmp*tmp;
if(Math.abs(t - Math.ceil(t))<0.000001 || Math.abs(t - Math.floor(t))<0.000001){
cnt += 1;
}
}
}
System.out.println(cnt);
}
}

全部评论
最后一题50%,刚开始内存不够,后台改了,结果超时,关键,都是50%,
点赞 回复 分享
发布于 2017-09-10 21:07
第一题用先用String拼串,然后转成BigInteger,然后用BigInteger的compareTo方法,-1小于,0等于,1大于
点赞 回复 分享
发布于 2017-09-10 21:10
第三题 Max(NM) > 1 秒啊 求[1 根号MN]的平方数的因子对数
点赞 回复 分享
发布于 2017-09-10 21:11
你这第一题想得也太复杂了
点赞 回复 分享
发布于 2017-09-10 21:12
先比较长度 然后相等的话再比较字符串就好了
点赞 回复 分享
发布于 2017-09-10 21:13
第一题 数字顺序不能改
点赞 回复 分享
发布于 2017-09-10 21:44
能给我讲讲第二题吗 谢谢
点赞 回复 分享
发布于 2017-09-10 21:50
我的想法递归 然后死掉了
点赞 回复 分享
发布于 2017-09-10 21:51
StringBuilder sb=new StringBuilder(); StringBuilder sb2=new StringBuilder(); for(int i=0;i<num1;i++){ sb.append(n+""); } //System.out.println(sb.toString()); for(int i=0;i<num2;i++){ sb2.append(m+""); } //System.out.println(sb2.toString()); if(sb.length()==sb2.length()){ if((sb.toString().compareTo(sb2.toString())==0)){ System.out.println("Equal"); }else if(sb.toString().compareTo(sb2.toString())>0){ System.out.println("Greater"); }else{ System.out.println("Less"); } }else if(sb.length()>sb2.length()){ System.out.println("Greater"); }else{ System.out.println("Less"); } 第一题套用API,稳稳地,很幸福
点赞 回复 分享
发布于 2017-09-10 21:57
第二题空间o(1)就行了
点赞 回复 分享
发布于 2017-09-10 22:57

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务