1. 程式人生 > >Java 刷題(五)

Java 刷題(五)

IE ont bubuko pic remove ins help int ace

Codewars 刷題第五天,數組問題。

Enough is enough!

Alice and Bob were on a holiday. Both of them took many pictures of the places they‘ve been,

and now they want to show Charlie their entire collection.

However, Charlie doesn‘t like this sessions, since the motive usually repeats.

He isn‘t fond of seeing the Eiffel tower 40 times.

He tells them that he will only sit during the session if they show the same motive at most N times.

Luckily, Alice and Bob are able to encode the motive as a number.

Can you help them to remove numbers such that their list contains each number only up to N times,

without changing the order?

Task

Given a list lst and a number N,

create a new list that contains each number of lst at most N times without reordering.

For example if N = 2, and the input is [1,2,3,1,2,1,2,3],

you take [1,2,3,1,2], drop the next [1,2] since this would lead to 1 and 2 being in the result 3 times,

and then take 3, which leads to [1,2,3,1,2,3].

Example

EnoughIsEnough.deleteNth(new int[] {20,37,20,21}, 1) // return [20,37,21]

EnoughIsEnough.deleteNth(new int[] {1,1,3,3,7,2,2,2,2}, 3) // return [1, 1, 3, 3, 7, 2, 2, 2]

題目要求:

  給定數組,給定限制maxOccurrences,數組裏的數字的出現次數不得超過限制。然後將數組返回,

對於這種不確定長度的問題還是建議使用Vector(),或者哈希表等。

技術分享圖片

此處,用到了兩個函數比較巧妙getOrdefault(int,int)Arrays.copyOfRange(int,int,int).很好的解決了遍歷中的問題。

Java 刷題(五)