牛客網 位元組跳動面試題 萬萬沒想到之抓捕孔連順

2022-09-15 08:45:07 字數 1746 閱讀 1117

部落格說明

**題目

我叫王大錘,是一名**。我剛剛接到任務:在位元組跳動大街進行埋伏,抓捕****孔連順。和我一起行動的還有另外兩名**,我提議

我們在位元組跳動大街的n個建築中選定3個埋伏地點。

為了相互照應,我們決定相距最遠的兩名**間的距離不超過d。

我特喵是個天才! 經過精密的計算,我們從x種可行的埋伏方案中選擇了一種。這個方案萬無一失,顫抖吧,孔連順!

萬萬沒想到,計畫還是失敗了,孔連順化妝成小龍女,混在cosplay的隊伍中逃出了位元組跳動大街。只怪他的偽裝太成功了,就是楊過本人來了也發現不了的!

請聽題:給定n(可選作為埋伏點的建築物數)、d(相距最遠的兩名**間的距離的最大值)以及可選建築的座標,計算在這次行動中,大錘的小隊有多少種埋伏選擇。

注意:兩個**不能埋伏在同一地點

三個**是等價的:即同樣的位置組合(a, b, c) 只算一種埋伏方法,不能因「**之間互換位置」而重複使用

輸入描述:

第一行包含空格分隔的兩個數字 n和d(1 ≤ n ≤ 1000000; 1 ≤ d ≤ 1000000)

第二行包含n個建築物的的位置,每個位置用乙個整數(取值區間為[0, 1000000])表示,從小到大排列(將位元組跳動大街看做一條數軸)

輸出描述:
乙個數字,表示不同埋伏方案的數量。結果可能溢位,請對 99997867 取模
輸入例子1:
4 3

1 2 3 4

輸出例子1:
4
例子說明1:
可選方案 (1, 2, 3), (1, 2, 4), (1, 3, 4), (2, 3, 4)
輸入例子2:
5 19

1 10 20 30 50

輸出例子2:
1
例子說明2:
可選方案 (1, 10, 20)
思路

1、首先確定範圍,計算排列組合,從第三個數開始判斷,因為必須有三個數嘛,判斷違法的次數,如果當前數字不合法,那麼違法的次數加一,那麼每次的次數為(當前第幾個數-違法次數)x(當前第幾個數-違法次數)/ 2

2、累加每次範圍的次數,就可以得到全部的了

**

import j**a.util.scanner;

/** * @author guizimo

* @date 2020/7/17 10:04 下午

*/public class zijie2

run(n, d, position);}}

public static void run(int n, int d, int position)

//計算合法的次數,n(n-i)/2

sum += (long) (i - j) * (long) (i - j - 1) / 2;

}system.out.println(sum % mod);

}}

感謝

牛客網

位元組跳動

以及勤勞的自己

位元組跳動春招筆試題萬萬沒想到

萬萬沒想到之聰明的編輯 原題目鏈結 長度大於等於3,才可能出現三個連續相同的情況 長度大於等於4,才可能出現aabb情況 針對這兩種情形,只需要將左邊的指標回退一步即可.include include include using namespace std class solution while ...

位元組跳動面試題01萬萬沒想到之聰明的編輯

我叫王大錘,是一家出版社的編輯。我負責校對投稿來的英文稿件,這份工作非常煩人,因為每天都要去修正無數的拼寫錯誤。但是,優秀的人總能在平凡的工作中發現真理。我發現乙個發現拼寫錯誤的捷徑 三個同樣的字母連在一起,一定是拼寫錯誤,去掉乙個的就好啦 比如 helllo hello 兩對一樣的字母 aabb型...

牛客網位元組跳動演算法題 萬萬沒想到之抓捕孔連順

題意 輸入乙個n,d,n代表n個點,d間隔代表最大距離,然後輸入n個點 問有多少種組合,三個點的最大差值小於d 解題思路 當兩點距離剛好在範圍內時,通過規律可以發現 此時的組合為 n n 1 2,那麼只需尋找極限距離即可 這個規律怎麼找呢?先拿出乙個固定點,其餘兩點在不重複的情況下的組合就是答案 i...