哔哩哔哩后台笔试AC,

1.单词反转,采用栈,先进后出的特点:
package bilibili;

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

public class Main {

	public static void main(String[] args) {
		
		Scanner scanner=new Scanner(System.in);
		String str="";
		while (scanner.hasNext()) {
			str=scanner.nextLine();
			String[] strings=str.split(" ");
			Stack< String> stack=new Stack<>();
			for (int i = 0; i < strings.length; i++) {
				stack.push(strings[i]);
			}
			while (!stack.isEmpty()) {
				System.out.print(stack.pop()+" ");
			}
		}
		scanner.close();
		
	}
}
3.背包问题,采用标记价值的索引号跟踪
package Maxbag;

import java.util.Arrays;

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		
		Scanner scanner=new Scanner(System.in);
		int N,M,sum=0,i;
		while (scanner.hasNext()) {
			N=scanner.nextInt();
			M=scanner.nextInt();
			int [] w=new int[N];
			int [] v=new int[N];
			double [] p=new double[N];
			double [][] q=new double[N][N];
			for ( i = 0; i < N; i++) {
				w[i]=scanner.nextInt();
			}
			for ( i = 0; i < N; i++) {
				v[i]=scanner.nextInt();
			}
			for (i = 0; i < N; i++) {
				p[i]=v[i]/w[i];
				q[i][i]=p[i];
				
				
			}
			Arrays.sort(p);
			int num=N-1;
			for ( i = 0; i < N; i++) {
				if (q[i][i]==p[num]) {
			
					M-=w[i];
					if (M>0) {
						sum+=v[i];
					}
					if (M<0) {
						break;
					}
					num--;
				}
			}
			System.out.println(sum);
		}
	
		scanner.close();
		
	}
}


#哔哩哔哩##笔试题目##Java工程师#
全部评论
兄弟,你第一题按理说违规了,要求O(1)空间。
点赞 回复 分享
发布于 2019-08-20 21:32
第一题用不着栈,数组从后向前输出
点赞 回复 分享
发布于 2019-08-20 21:42
虽然C很简单,都TM的到它编辑器就通过不了了,本地IDE完全没问题啊
点赞 回复 分享
发布于 2019-08-20 21:24

相关推荐

不愿透露姓名的神秘牛友
06-18 22:30
点赞 评论 收藏
分享
asdasdasdasdas:19岁,不容易啊可能升个本会好点,现在学历歧视太严重了
点赞 评论 收藏
分享
评论
点赞
14
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务