商汤科技 8-19 java

第一题  AC 100%  leetcode原题
package LinkCode;

import java.util.Scanner;
import java.util.Stack;

public class SenseTime1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		String str = sc.nextLine();
		String[] temp = str.split(" ");
		System.out.println(cal(temp));
		sc.close();
	}

	private static int cal(String[] temp) {
		// TODO Auto-generated method stub
		int len = temp.length;
		if (len == 0)
			return 0;
		Stack<Integer> stack = new Stack<Integer>();
		int num1, num2;
		for (int i = 0; i < len; i++) {
			if (temp[i].equals("+")) {
				num1 = stack.pop();
				num2 = stack.pop();
				stack.push(num2 + num1);
			} else if (temp[i].equals("-")) {
				num1 = stack.pop();
				num2 = stack.pop();
				stack.push(num2 - num1);
			} else if (temp[i].equals("*")) {
				num1 = stack.pop();
				num2 = stack.pop();
				stack.push(num2 * num1);
			} else if (temp[i].equals("/")) {
				num1 = stack.pop();
				num2 = stack.pop();
				stack.push(num2 / num1);
			} else {
				stack.push(Integer.parseInt(temp[i]));
			}
		}
		return stack.pop();
	}
}


第二题  AC 100%  leetcode原题
package LinkCode;

import java.util.Scanner;

public class SenseTime2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] arr = new int[n];
		for (int i = 0; i < n; i++)
			arr[i] = sc.nextInt();
		System.out.println(cal(arr));
		sc.close();
	}

	private static int cal(int[] arr) {
		// TODO Auto-generated method stub
		int count1 = 0, count2 = 0, res = 0;
		for (int i = 0; i < arr.length - 1; i++) {
			if (arr[i] <= arr[i + 1]) {
				if (count2 > 0) {
					if (count1 > 0) {
						res = Math.max(res, count1 + count2 + 1);
						count1 = 0;
					}
					count2 = 0;
				}
				if (arr[i] < arr[i + 1]) {
					count1++;
				} else {
					count1 = 0;
				}
			} else if (arr[i] > arr[i + 1])
				count2++;
		}
		if (count1 > 0 && count2 > 0)
			res = Math.max(res, count1 + count2 + 1);
		return res;
	}
}
第三题 递归 AC 20% 数组越界,嗯没运行就知道会越界
方法不行
package LinkCode;

import java.util.Scanner;

public class SenseTime3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		long n = sc.nextLong();
		int a = sc.nextInt();
		int b = sc.nextInt();
		int c = sc.nextInt();
		int f = sc.nextInt();
		System.out.println(fun(n, a, b, c, f));
		sc.close();
	}

	public static long fun(long n, int a, int b, int c, int f) {
		if (n < 0)
			return 0;
		else if (n == 0)
			return f;
		else {
			long temp = (long) (a * fun(n - 1, a, b, c, f) + 
					b * fun(n - 2, a, b, c, f) + c * fun(n - 3, a, b, c, f)
					+ 2 * Math.pow(n, 2) - n + 32767);
			return temp % 100000007;
		}
	}

}
第四题 AC 66.67%
package LinkCode;

import java.util.Scanner;

public class SenseTime4 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		int[] arr = new int[n];
		for (int i = 0; i < n; i++)
			arr[i] = sc.nextInt();
		System.out.println(cal(arr));
		sc.close();
	}

	private static int cal(int[] arr) {
		// TODO Auto-generated method stub
		int sum1 = 0, sum2 = 0, count1 = 0, count2 = 0;
		if (arr.length < 2 || arr.length == 0)
			return 0;
		for (int i = 0; i < arr.length - 2; i++) {
			sum1 = arr[i] + arr[i + 1];
			sum2 = arr[i + 1] + arr[i + 2];

			if (squnum(sum1) && squnum(sum2) && arr[i] != arr[i + 2])//6 10 15  15 10 6
				count1 += 1;
			if (squnum(sum1) && squnum(sum2) && arr[i] == arr[i + 2])//6 10 6 
				count2 += 1;

		}
		return (count1 * 2 + count2);

	}

	private static boolean squnum(int sum) {// 完全平方数
		// TODO Auto-generated method stub
		boolean flag = false;
		double temp = Math.sqrt(sum);
		int q = (int) temp;
		if (sum == Math.pow(q, 2))
			flag = true;
		return flag;
	}

}



#商汤科技##笔试题目#
全部评论
老哥,一模一样。第三题你用递归的方式会栈溢出的,所以百分之二十。然而我改成迭代了还是20%。。。。
点赞 回复 分享
发布于 2019-08-19 21:18
第二题是leetcode第几题
点赞 回复 分享
发布于 2019-08-19 21:21
没运行就知道会越界。。也有勇气提交的么。。
点赞 回复 分享
发布于 2019-08-19 21:19
做题的时候要监测手机嘛?
点赞 回复 分享
发布于 2019-08-19 21:20
超出表示范围了,输出例子后面有说明
点赞 回复 分享
发布于 2019-08-19 21:22
第四题 AC public class Main {     private static int[] arr={0,1,2,3,4,5,6,7,8,9};     private static int count=0;     private static Set<String> set=new HashSet<>();     public static void main(String[] args){         Scanner in=new Scanner(System.in);         count=0;         int n=in.nextInt();         if(n<=1)         {             System.out.println(0);             return;         }         int[] arr=new int[n];         for(int i=0;i<n;i++)         {             arr[i]=in.nextInt();         }         is(arr,0);         System.out.println(count);     }     private static void is(int[] arr,int index)     {         if(index>=arr.length)         {             String str=Arrays.toString(arr);             if(!set.contains(str))             {                 if(is(arr))                 {                     count++;                 }                 set.add(str);             }         }         for(int i=index;i<arr.length;i++)         {             swap(arr,i,index);             is(arr,index+1);             swap(arr,i,index);         }     }     private static void swap(int[] arr,int i,int j)     {         if(i==j)         {             return;         }         int temp=arr[i];         arr[i]=arr[j];         arr[j]=temp;     }     private static boolean is(int[] arr)     {         for(int i=1;i<arr.length;i++)         {             if(!is(arr[i-1]+arr[i]))             {                 return false;             }         }         return true;     }     private static boolean is(int n)     {         double d=Math.sqrt(n);         double ds=0;         for(int a:arr)         {             for(int i=0;i<arr.length;i++)             {                 ds=d%arr[i];                 if(ds==a)                 {                     return true;                 }             }         }         return false;     } }
点赞 回复 分享
发布于 2019-08-19 21:23
我做题时在想第4题要先全排列呢
点赞 回复 分享
发布于 2019-08-19 21:27
请问楼主第二题leetcode你刷到过了?
点赞 回复 分享
发布于 2019-08-19 21:29
老哥,第四个题你是只考虑了三个数组元素的情况吗?
点赞 回复 分享
发布于 2019-08-19 21:32

相关推荐

11-26 22:34
已编辑
重庆邮电大学 Java
快手 客户端开发 (n+5)k*16 公积金12
牛客895077908号:佬 什么双非硕啊
点赞 评论 收藏
分享
评论
2
17
分享
牛客网
牛客企业服务