Giải pháp hackerrank máy in tròn trong JavaScript

https. //www. hackerrank. com/challenges/circular-array-rotation/problem?utm_campaign=challenge-recommendation&utm_medium=email&utm_source=chiến dịch 24 giờ

Điều này làm tôi mất khoảng năm phút

Đây không thực sự là về cách tôi giải quyết vấn đề, mặc dù tôi sẽ nói ngắn gọn về điều đó

https. // stackoverflow. com/câu hỏi/2150108/efficiency-way-to-shift-a-list-in-python

Tôi đã tự hỏi mình/google "dịch chuyển mảng python sang phải" và được nhắc rằng có tồn tại

def circularArrayRotation[a, k, queries]:
    from collections import deque 
    items = deque[a] 
    items.rotate[k]
    ret_list = []
    for q in queries:
        print[items[q]]
5 và
def circularArrayRotation[a, k, queries]:
    from collections import deque 
    items = deque[a] 
    items.rotate[k]
    ret_list = []
    for q in queries:
        print[items[q]]
6. Tôi đã sử dụng chúng trước đây. Python có rất nhiều công cụ tuyệt vời mà tôi quên mất mọi lúc. Bạn không thể phạt ai đó vì không nhớ mọi thứ

def circularArrayRotation[a, k, queries]:
    from collections import deque 
    items = deque[a] 
    items.rotate[k]
    ret_list = []
    for q in queries:
        #print[items[q]]
        ret_list.append[items[q]]
    return ret_list

Bây giờ, một điều thú vị mà bạn sẽ lưu ý là tôi đã nhận xét câu lệnh in trong vòng lặp

Khi tôi lần đầu tiên viết chức năng, nó trông như thế này

def circularArrayRotation[a, k, queries]:
    from collections import deque 
    items = deque[a] 
    items.rotate[k]
    ret_list = []
    for q in queries:
        print[items[q]]

Bây giờ, đây chính xác là những gì mô tả vấn đề yêu cầu

"Đối với mỗi truy vấn, hãy in giá trị của phần tử tại chỉ mục của mảng đã xoay trên một dòng mới. "

Tôi nghĩ rằng tôi đã làm điều đó, nhưng sau đó trình biên dịch/trình kiểm tra HackerRank bị lỗi

Compiler Message
Runtime Error
Error [stderr]
Traceback [most recent call last]:
  File "Solution.py", line 42, in 
    fptr.write['\n'.join[map[str, result]]]
TypeError: 'NoneType' object is not iterable
Input [stdin]
3 2 3
1 2 3
0
1
2

Vì vậy, tôi đi "Hmmm. " và kiểm tra chính

if __name__ == '__main__':
    fptr = open[os.environ['OUTPUT_PATH'], 'w']

    nkq = input[].split[]

    n = int[nkq[0]]

    k = int[nkq[1]]

    q = int[nkq[2]]

    a = list[map[int, input[].rstrip[].split[]]]

    queries = []

    for _ in range[q]:
        queries_item = int[input[]]
        queries.append[queries_item]

    result = circularArrayRotation[a, k, queries]

    fptr.write['\n'.join[map[str, result]]]
    fptr.write['\n']

    fptr.close[]

Phần quan trọng là đây

result = circularArrayRotation[a, k, queries]

Có vẻ như họ muốn một giá trị trả lại. à há. Sau đó tôi hiểu những gì tôi đã làm sai

Xem, gỡ lỗi rất dễ dàng

Vì vậy, tôi đã nhận xét câu lệnh in và xây dựng một danh sách các mục để trả về các tham số đã cho và BAM. 100% trong các bài kiểm tra

Vài đêm trước, tôi đã tăng từ hạng 900.000 lên hạng 600.000 trên HackerRank. Vừa rồi mình chuyển lên 544328

Thành thật mà nói, toàn bộ cuộc thảo luận này đưa ra một điều mà tôi sẽ nổi giận/viết blog trong tương lai gần nếu ai đó không làm điều đó trước tôi, nhưng phần lớn là về sự khác biệt triết học của phong cách phát triển oldschool và newschool

Cách đây rất lâu, chúng ta không có internet siêu nhanh để tra cứu mọi thứ và các nhà phát triển phải thực sự biết mọi thứ một cách siêu hiệu quả hoặc có thể tham khảo mọi thứ trong sách vật lý

Nếu có một điều tôi học được sau khi rời trường công, thì đó là cách sử dụng mục lục của cuốn sách và tìm câu trả lời cho các câu hỏi hoặc giải pháp cho các vấn đề.

Điều này khác với việc bạn tự thiết kế tiện ích của

def circularArrayRotation[a, k, queries]:
    from collections import deque 
    items = deque[a] 
    items.rotate[k]
    ret_list = []
    for q in queries:
        print[items[q]]
6 và
def circularArrayRotation[a, k, queries]:
    from collections import deque 
    items = deque[a] 
    items.rotate[k]
    ret_list = []
    for q in queries:
        print[items[q]]
8. Nhưng, HackerRank không yêu cầu tôi thiết kế nó từ đầu. Họ chỉ yêu cầu bạn giải quyết vấn đề

Có gian lận để có thể tra cứu mọi thứ không?

tôi nghĩ. khi bạn có khả năng tự xây dựng các công cụ, bạn được bật đèn xanh để sử dụng các công cụ được tạo sẵn. Thường thì vấn đề đối với tôi là "sử dụng công cụ nào?", nhưng cho đến nay, Python đã làm được điều đó

Xem vấn đề ban đầu trên HackerRank

Các giải pháp

Bạn thực sự có thể xoay mảng

trong Javascript [của Alessia Bragagnolo]

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
function circularArrayRotation[a, k, queries] {
  let result = [];

  while [k > 0] {
    let tmp = a.pop[];
    a.unshift[tmp];
    k--;
  }

  for [let i = 0; i > N >> K >> Q;
K %= N;
vector arr[N];
copy_n[istream_iterator[cin], N, begin[arr]];
const auto diff = N-K;
while [Q--]
{
    cin >> idx;
    cout 

Chủ Đề