牛客雜記——6.4

基礎知識

1、先到先服務的作業調度與隊列結構有關,隊列的修改是依先進先出的原則進行的。
2、黑盒測試方法
1)、等價類劃分方法
2)、邊界值分析方法
3)、錯誤推測方法
4)、因果圖方法
5)、判定表驅動分析方法
6)、正交實驗設計方法
7)、功能圖分析方法
8)、場景設計方法
3、白盒測試方法
1)有代碼檢查法、
2)靜態結構分析法、
3)靜態質量度量法、
4)邏輯覆蓋法、
5)基本路徑測試法、
6)域測試、
7)符號測試、
8)路徑覆蓋和程序變異
4、計算機存儲信息的最小單位,稱之爲位( bit ,又稱比特),存儲器中所包含存儲單元的數量稱爲存儲容量,其計量基本單位是字節( Byte ,簡稱 B ), 8 個二進制位稱爲 1 個字節,此外還有 KB 、 MB 、 GB 、 TB 等。 MIPS 即 Million Instruction Per Second 的簡寫--計算機每秒鐘執行的百萬指令數,是衡量計算
機速度的指標。

5、算法是指解題方案的準確而完整的描述,算法不等於程序,也不等於計算方法。設計算法時不僅要考慮對數據對象的運算和操作,還要考慮算法的控制結構。
6、java語言的數組複製方法,System.arraycopy
效率最高

7、軟件生命週期分爲 3 個階段:軟件定義階段,任務是確定軟件開發工作必須完成的目標,確定工程的可行性;
軟件開發階段,任務是具體完成設計和實現定義階
段所定義的軟件,通常包括總體設計、詳細設計、編碼和測試;
軟件維護階段,任務是使軟件在運行中持久地滿足用戶的需要。需求分析屬於軟件定義階段的任
務。
8、Socket通信編程
1)服務器端通過new ServerSocket()創建TCP連接對象
2)服務器端通過TCP連接對象調用accept()方法創建通信的Socket對象
3)客戶端通過new Socket()方法創建通信的Socket對象

編程

買蘋果

鏈接:https://www.nowcoder.com/questionTerminal/61cfbb2e62104bc8aa3da5d44d38a6ef

小易去附近的商店買蘋果,奸詐的商販使用了捆綁交易,只提供6個每袋和8個每袋的包裝(包裝不可拆分)。 可是小易現在只想購買恰好n個蘋果,小易想
購買儘量少的袋數方便攜帶。如果不能購買恰好n個蘋果,小易將不會購買。
在這裏插入圖片描述
【解題思路】:
對數字特徵進行分析。
首先,6和8都是偶數。因此,能湊出的個數也一定是偶數。程序中若蘋果總數是奇數,可以直接返回-1。
再次,偶數個蘋果數對8取模,其結果只可能爲0,2,4,6。若餘數爲6或者0,則可以直接用6包裝情況處理,不
需要回溯購買8包裝的情況。若餘數爲4,只需回溯1次即可,因爲8+4=12, 12%6 = 0。若餘數爲2,只需回溯
2次即可,因爲8+8+2=18, 18%6 = 0。
綜上,可以採用如下思路進行處理。(由於數字6和8的特徵,本方法只適用於本題)
情況1:若num不是偶數,則直接返回-1
情況2:若num%8 = 0,則返回num/8
情況3:若num%8 != 0,則只需回溯1次或者2次8包裝購買個數,就可以求解。回溯1次,其結果爲n/8-1+2
= n/8+1;回溯1次,其結果爲n/8-2+3 = n/8+1。因此,可以情況3下,可以返回n/8+1。

import java.util.
*;
public class Main{
public static void main(String args[]) {
Scanner in = new Scanner(System.in);
while(in.hasNextInt()){
int n = in.nextInt();
System.out.println(count(n));
}
}
public static int count(int n){
//一定是偶數(6,8都是),最小是6,10以上偶數都可以;
if(n%2!=0||n==10||n<6)
return -1;
//如果拿八個拿完最好
if(n%8==0)
return n/8;
//對於10以上的偶數,只要對8取餘數不爲0,就要從前面的1或者2個8中拿出2個,把餘數補爲6(本來餘
數就是6,就不用拿)。所以+1return 1+n/8;
}
}

刪除公共字符

鏈接:https://www.nowcoder.com/questionTerminal/f0db4c36573d459cae44ac90b90c6212

輸入兩個字符串,從第一字符串中刪除第二個字符串中所有的字符。例如,輸入”They are students.”和”aeiou”,則刪除之後的第一個字符串變成”Thy r stdnts.”
測試樣例:
【解題思路】:
最簡單的思路就是兩層循環遍歷,下面將“They are students.”稱爲字符串1,將“aeiou”稱爲字符串2。每遍
歷到字符串2中的一個字符,就在字符串1中找到相同的字符,找到之後刪除它,並將字符串1後面的字符整
體向前移動1位。
在這裏插入圖片描述

 public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            char[] ch = sc.nextLine().toCharArray();
            String str = sc.nextLine();
            for(int i=0;i<ch.length;i++){
                if(!str.contains(String.valueOf(ch[i]))){
                    System.out.print(ch[i]);
                }
            }
        }
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章