It seems that coding tests are conducted overseas in interviews with engineers, and in many cases, the main thing is to implement specific functions and classes according to the theme.
Apparently, many engineers take measures on the site called LetCode.
It is a site that trains the algorithmic power that can withstand the coding test that is being done in the early story, and it is an inevitable path for those who want to build a career at an overseas tech company.
I wrote it in a big way, but I have no plans to have such an interview at the moment.
However, as an IT engineer, it would be better to have the same level of algorithm power as a person, so I would like to solve the problem irregularly and write down the method I thought at that time as a memo.
I'm solving it with Python3.
Leet Code Table of Contents Starting from Zero
Last time Leet Code Day78 "206. Reverse Linked List" starting from zero
Right now, I'm prioritizing the Medium of the Top 100 Liked Questions. I solved all Easy, so if you are interested, please go to the table of contents.
Twitter I'm doing it.
** Technical Blog Started! !! ** ** I think the technology will write about LetCode, Django, Nuxt, and so on. ** This is faster to update **, so please bookmark it!
1282. Group the People Given the Group Size They Belong To The difficulty level is Medium.
The problem is that there are n
people with IDs from 0
to n -1
, each belonging to exactly one group. Given an array groupSizes
of length n
that indicates the size of the group to which each person belongs, it returns the number of groups and the ʻID` of the people in each group.
You can return any solution in any order, and so on for ʻID`. It is also guaranteed that at least one solution exists.
Example 1:
Input: groupSizes = [3,3,3,3,3,1,3] Output: [[5],[0,1,2],[3,4,6]] Explanation: Other possible solutions are [[2,1,6],[5],[0,4,3]] and [[5],[0,6,2],[4,3,1]].
Example 2:
Input: groupSizes = [2,1,3,3,3,2] Output: [[1],[0,5],[2,3,4]]
#solution
class Solution:
def groupThePeople(self, groupSizes):
ans,group,next_group = [],[],[]
for i,j in enumerate(groupSizes):
group.append((j,i))
group.sort()
for length,index in group:
next_group.append(index)
if len(next_group) == length:
ans.append(next_group)
next_group = []
return ans
# Runtime: 64 ms, faster than 75.60% of Python online submissions for Group the People Given the Group Size They Belong To.
# Memory Usage: 12.7 MB, less than 59.40% of Python online submissions for Group the People Given the Group Size They Belong To.
First, replace the index and value of groupSizes
in the prepared group
and sort.
Then, get the sorted length and index, add the length to next_group
, check if the length of group
and the length of next_group
are the same each time, and if they are the same, return it. Add to ans and finish.
Note that if you do not initialize next_group
after adding it to that ʻans`, you will get the following:
Input
[3,3,3,3,3,1,3]
Output
[[5,0,1,2,3,4,6],[5,0,1,2,3,4,6]]
Expected
[[5],[0,1,2],[3,4,6]]
I wondered if there was something because the acceptance was high, but there was nothing in particular.
So that's it for this time. Thank you for your hard work.
Recommended Posts