秋招java筆試-諾瓦星雲科技和老虎集團java筆試

2020-08-10 01:33:48
西安諾瓦星雲科技筆試

筆試偏c…
題型:1.操作系統 2.網路介面 3.數據結構 4.物件導向 5.程式設計改錯
友元函數、二分法、虛擬函式
2道改錯是c語言的程式改錯


老虎集團

1.公交車
1000個站臺,一輛公交的容量爲c,問最少需要多少輛車
輸入:

[ [ 2 , 1 , 4 ] , [ 4 , 2 , 6 ] ] , 5

[上車人數,站臺號,下站的站臺號],公交車容量
輸出:

2

鏈接:https://www.nowcoder.com/discuss/471705?type=post&order=time&pos=&page=1&channel=666&source_id=search_post

public static int minCarCount (int[][] trips, int capacity) {
        // write code here
        //站臺上車後,記錄每個每個站臺上車上的總人數
        int[] roads = new int[1001];
        int m = trips.length;
        for (int i = 0;i < m;i++)
        {
            for (int j = trips[i][1];j <= trips[i][2];j++)
            {
                roads[j] += trips[i][0];
            }

        }
        int count = 0;
        for (int i = 0;i < 1001;i++)
            count = Math.max(count, roads[i]);
        int res = count % capacity == 0 ? count/capacity : count/capacity + 1;
        return res;
    }

2.打怪升級
給定幾個任務的陣列,裏面包含打怪需要的級數和通關後可以升的級數,求完成x個任務後,最大的級數。

輸入:

2,1,[ [ 0 , 1 ] , [ 1 , 2 ] , [ 1 , 3 ]

需要完成x=2個任務,現在爲1級,【【0級,升1級】,【1級,升2級】,【1級,升3級】】
輸出:

6

1+2+3(本身的1級+第二個任務+第三個任務)

貪心----每次通關可升級最大的那個

public int maxLevel (int x, int level, int[][] tasks) {
	
	while(x>0){
		int max = 0;
		int maxid = 0;
		for(int i = 0;i < tasks.length;i++){
			if(level >= tasks[i][0] && max < tasks[i][1]){
				max = tasks[i][1];
				maxid = i;
			}
		}
		level += max;
		task[maxid][1] = 0;
		x--;
	}
	return level;
}

遞回

public int maxLevel (int x, int level, int[][] tasks) {
        // write code here
        //在每個任務裏面找到符合現在等級的最大等級提升
        int max=0;//記錄最大升級數
        int maxid = 0;//記錄最大升級數的id----以便通關後賦值爲0,免得後面重複通關
        if (x==0){
            return level;
        }

        for (int i = 0; i < tasks.length; i++) {
            if (level>=tasks[i][0]&&max < tasks[i][1]){
                max=tasks[i][1];
                maxid = i;
            }
            tasks[maxid][1] = 0;
        }
        return maxLevel(x-1,level+max,tasks);