1. 程式人生 > >攜程2018 秋招程式設計題

攜程2018 秋招程式設計題

第一題:

兩個排好序的陣列 求中位數

import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.Scanner;

public class Main {


    public static void main(String[] args) {
        
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int count = 0;
            PriorityQueue<Integer> minHeap = new PriorityQueue<>();
            PriorityQueue<Integer> maxHeap = new PriorityQueue<Integer>(15, new Comparator<Integer>() {
                @Override
                public int compare(Integer o1, Integer o2) {
                    return o2 - o1;
                }
            });
            
            int n = scanner.nextInt();
            for (int i = 0; i < n; i++) {
                int num = scanner.nextInt();
                if (count % 2 == 0) {
                    maxHeap.offer(num);
                    int filteredMaxNum = maxHeap.poll();
                    minHeap.offer(filteredMaxNum);
                } else {
                    minHeap.offer(num);
                    int filteredMinNum = minHeap.poll();
                    maxHeap.offer(filteredMinNum);
                }
                count++;
            }
            int m = scanner.nextInt();
            for (int i = 0; i < m; i++) {
                int num = scanner.nextInt();
                if (count % 2 == 0) {
                    maxHeap.offer(num);
                    int filteredMaxNum = maxHeap.poll();
                    minHeap.offer(filteredMaxNum);
                } else {
                    minHeap.offer(num);
                    int filteredMinNum = minHeap.poll();
                    maxHeap.offer(filteredMinNum);
                }
                count++;
            }

            if (count % 2 == 0) {
                System.out.println(new Double((minHeap.peek() + maxHeap.peek())) / 2);
            } else {
                System.out.println(new Double((minHeap.peek())));
            }
        }
    }
}

第二題

輸入一個無序陣列,輸出陣列中不存在的最小正整數

import java.util.*;

public class Main {
    /*請完成下面這個函式,實現題目要求的功能
    當然,你也可以不按照下面這個模板來作答,完全按照自己的想法來 ^-^
    ******************************開始寫程式碼******************************/
    static int findMinMis(int[] A) {
        if (A == null) {
            return 0;
        }
        Arrays.sort(A);
        int num = -1;
        for (int i = 1; i < A.length; i++) {
            if (A[i] - A[i - 1] != 1) {
                if (A[i - 1] + 1 > 0) {
                    num = A[i - 1] + 1;
                    break;
                }
            }
        }
        if (num == -1) {
            if (A[0] > 1) {
                num = A[0] - 1;
            } else {
                num = A[A.length - 1] + 1;
            }
            if (A[A.length - 1] < 0) {
                num = 1;
            }
        }
        return num;

    }

    /******************************結束寫程式碼******************************/


    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int res;

        int _A_size = 0;
        _A_size = Integer.parseInt(in.nextLine().trim());
        int[] _A = new int[_A_size];
        int _A_item;
        for (int _A_i = 0; _A_i < _A_size; _A_i++) {
            _A_item = Integer.parseInt(in.nextLine().trim());
            _A[_A_i] = _A_item;
        }

        res = findMinMis(_A);
        System.out.println(String.valueOf(res));
    }
}

第三題

去除重複字元(包括特殊字元)

import java.util.LinkedHashSet;
import java.util.Scanner;
import java.util.Set;

public class Main {
    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            String str = scanner.nextLine();
            Set<Character> set = new LinkedHashSet<>();
            for (int i = 0; i < str.length(); i++) {
                Character c = str.charAt(i);
                if (set.add(c)) {
                    System.out.print(c);
                }
            }
            System.out.println();
        }

    }
}


相關推薦

2018 程式設計

第一題: 兩個排好序的陣列 求中位數 import java.util.Comparator; import java.util.PriorityQueue; import java.util.Scanner; public class Main { publ

華為2018程式設計3:接啤酒

題目描述 酒館裡有m個龍頭可供顧客們接啤酒,每個龍頭每秒的出酒量相等,都是1。現有n名顧客準備接酒,他們初始的接酒順序已經確定。將這些顧客按接酒順序從1到n編號,i號顧客的接酒量為w_i。接酒開始時,1到m號顧客各佔一個龍頭,並同時開啟龍頭接酒。當其中某個顧客

2019面經

時間:20180912    11:30 地點:武漢玉豐國際酒店 一面(40mins) 1、簡單的自我介紹 2、說一說selenium的理解。 3、說一說Spring的理解(IOC和AOP)IOC怎麼就反轉了。 4、String和StringBulider區別,S

用友程式設計

 這道題類似LeetCode中的簡化路徑那道題,兩個題思路差不多。 程式碼如下: package com.test6.demo1; import java.util.Scanner; impo

2018記錄

喝可樂問題 紅眼睛和藍眼睛 真話和假話 三姬分金問題(海盜博弈) 三門問題 喝可樂問題 拼多多的一道題,A,B,C,D四小夥排隊在買可樂,A買完繼續到隊尾排隊,並且此時一個A變成

網易2017程式設計:暗黑的字串 [python]

''' [程式設計題] 暗黑的字串 時間限制:1秒 空間限制:32768K 一個只包含'A'、'B'和'C'的字串,如果存在某一段長度為3的連續子串中恰好'A'、'B'和'C'各有一個, 那麼這個字串就是純淨的,否則這個字串就是暗黑的。例如: BAACAACCBAAA 連續

網易2017程式設計集合

You are always too soft. 1、如果一個數字序列逆置之後跟原序列是一樣的就稱這樣的數字序列為迴文序列。例如:{1, 2, 1}, {15, 78, 78, 15} , {112} 是迴文序列, {1, 2, 2}, {15, 78, 87, 51} ,

網易2018程式設計集合

1、小易準備去魔法王國採購魔法神器,購買魔法神器需要使用魔法幣,但是小易現在一枚魔法幣都沒有,但是小易有兩臺魔法機器可以通過投入x(x可以為0)個魔法幣產生更多的魔法幣。 魔法機器1:如果投入x個魔法幣,魔法機器會將其變為2x+1個魔法幣 魔法機器2:如果投入x個魔法幣,魔

【優先佇列】百度2018程式設計—序列合併

0x00 前言 又一次當槍手的經歷,但是,說實話好久沒敲C++了有些手生,一個是freopen傳參是啥來著想半天沒想起來,一個是居然忘記優先佇列的pop是不return的了…… 哦對了這題我也放在新搭建的主頁上了,也可以去那兒看看~ 傳送門 此題為:

網易2017程式設計:迴文序列 [python]

''' [程式設計題] 迴文序列 時間限制:1秒 空間限制:32768K 如果一個數字序列逆置之後跟原序列是一樣的就稱這樣的數字序列為迴文序列。例如: {1, 2, 1}, {15, 78, 78, 15} , {112} 是迴文序列,  {1, 2, 2}, {15, 7

2017程式設計

1. 01串問題(網易內推批) 如果一個01串任意兩個相鄰位置的字元都是不一樣的,我們就叫這個01串為交錯01串。例如: “1”,”10101”,”0101010”都是交錯01串。 小易現在有一個01串s,小易想找出一個最長的連續子串,並且這個子串是一個交錯

愛奇藝2018C++ [程式設計]奶牛編號

連結:https://www.nowcoder.com/questionTerminal/b96da2bd7a574699b4ceaaa7819cf65b 來源:牛客網 牛牛養了n只奶牛, 牛牛想給每隻奶牛編號, 這樣就可以輕而易舉地分辨它們了。 每個奶牛對於數字都有自己的喜好, 第i只奶牛想要

愛奇藝2018C++ [程式設計]紅和綠

連結:https://www.nowcoder.com/questionTerminal/4ea618c551404efc8299c2eaac733329 來源:牛客網 牛牛有一些排成一行的正方形。每個正方形已經被染成紅色或者綠色。牛牛現在可以選擇任意一個正方形然後用這兩種顏色的任意一種進

招商銀行信用卡中心2018部分程式設計彙總

1、給出一個非空的字串,判斷這個字串是否是由它的一個子串進行多次首尾拼接構成的。 例如,"abcabcabc"滿足條件,因為它是由"abc"首尾拼接而成的,而"abcab"則不滿足條件。 輸入描述: 非空字串 輸出描述: 如果字串滿足上述條件,則輸出最長的滿足條件的

2018 迅雷校程式設計

第一題,就是找素勾股數,一開始想到用公式直接算,交上去沒能全部通過,後面腦子一熱,就直接暴力了一發,算是N*N的複雜度,結果就AC了,感覺筆試都是用的銀河計算機??? #include<algorithm> #include<iostream>

leetcode 騰訊 2018 精選(50 )Easy Part (3)

21. 合併兩個有序連結串列 將兩個有序連結串列合併為一個新的有序連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。  示例: 輸入:1->2->4, 1->3->4 輸出:1->1->2->3->4

leetcode 騰訊 2018 精選(50 )Easy Part (4)

70. 爬樓梯 假設你正在爬樓梯。需要 n 階你才能到達樓頂。 每次你可以爬 1 或 2 個臺階。你有多少種不同的方法可以爬到樓頂呢? 注意:給定 n 是一個正整數。 示例 1: 輸入: 2 輸出: 2 解釋: 有兩種方法可以爬到樓頂。 1. 1 階 + 1 階

2018網際網路大廠程式設計通關(一)

在這部分,我會帶著你徜徉在c/c++的世界裡,讓你感受到開發的樂趣以及知識的力量。助君秋招通關。 言歸正傳。 讓我們開始學習吧。 1.基本框架 #include<bits/stdc++.h> using namespace std; int main(){

2018網際網路大廠程式設計通關(二)

通過上一篇的繼續學習,連結地址為: 接下來,我們繼續講解秋招筆試程式設計題,及其知識點總結。 (1)歡聚時代2018秋--------------計算重複字串長度(點選文字進入連結) 題目解析 參考答案  方法一: #include <bits/std

騰訊2018筆試真-小Q的歌單

小Q的歌單 【題目描述】小 Q 有 X 首長度為 A 的不同的歌和 Y 首長度為 B 的不同的歌,現在小 Q 想用這些歌組成一個 總長度正好為 K 的歌單,每首歌最多隻能在歌單中出現一次