Hướng dẫn degree of an array hackerrank solution python - mức độ của một mảng giải pháp hackerrank python

Permalink

Không thể lấy lại những người đóng góp tại thời điểm này

Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều

# Thời gian: O [n]
# Không gian: O [n]
Nhập học collections
Lớp học [đối tượng]: Solution[object]:
Deffindshortestsubarray [tự, nums]: findShortestSubArray[self, nums]:
"" "
: Nhập NUMS: Danh sách [int]
: rtype: int
"" "
đếm = bộ sưu tập. Chuỗi [nums] = collections.Counter[nums]
trái, phải = {}, {}, right = {}, {}
fori, numinenumerate [nums]: i, num in enumerate[nums]:
trái.setDefault [num, i].setdefault[num, i]
đúng [num] = i[num] = i
độ = max [Counts.values ​​[]] = max[counts.values[]]
returnMin [right [num] -left [num] +1 \ min[right[num]-left[num]+1 \
fornumincounts.keys [] \ num in counts.keys[] \
ifcounts [num] == độ] counts[num] == degree]

Chúng tôi đã đưa ra mảng như A = [1,2,3,4,1,2,1,1,1,2,2] vì vậy chúng tôi đã tìm thấy phần tử trùng lặp khỏi mảng và tách mảng như [1,1,1 , 1,1] và [2,2,2,2] và chỉ in chiều dài lớn nhất của mảng nên ở đây độ dài lớn nhất là 5 là [1,1,1,1,1]. Tôi cố gắng sử dụng itertools nhưng không tập thể dục.

Đầu vào là A = [1,2,3,1,1,1,1,2,2,2]]

O/P nên là 5.

import itertools

my_list = [1,2,2,2,1,1,2,2,2,3,4]





num1=[]

for a, b in itertools.combinations[my_list,2]:
    if a == b:
        num1.append[b]

print[num1]
max_ele=max[num1]
print[max_ele]
print[num1.count[max_ele]]

CẬP NHẬT {mảng [i], đếm [mảng [i]]+1} trong đếm.degree of this array is defined as the maximum frequency of any one of its elements.

Lấy một biến ANS = n.

Đối với mỗi ARR [i] có số lượng [mảng [i]] == k:

Input: nums = [1,2,2,3,1]
Output: 2
Explanation: 
The input array has a degree of 2 because both elements 1 and 2 appear twice.
Of the subarrays that have the same degree:
[1, 2, 2, 3, 1], [1, 2, 2, 3], [2, 2, 3, 1], [1, 2, 2], [2, 2, 3], [2, 2]
The shortest length is 2. So return 2.

Ans = min [phải [mảng [i]]-trái [mảng [i]]+1, ans]

Input: nums = [1,2,2,3,1,4,2]
Output: 6
Explanation: 
The degree is 3 because the element 2 is repeated 3 times.
So [2,2,3,1,4,2] is the shortest subarray, therefore returning 6.

Constraints:

  • Ví dụ về mức độ của một mảng
  • Ở đây chúng tôi có hai yếu tố có tần số tối đa là 3, đây là 1 và 2.

  • Báo cáo vấn đề
  • Cách tiếp cận 1: Sử dụng tìm kiếm nhị phân
    • Thuật toán
    • Thực hiện
      • Chương trình C ++ cho mức độ của một mảng
    • Sự phức tạp
  • Cách tiếp cận 2: Sử dụng băm
    • Thuật toán
    • Thực hiện
    • Thực hiện
      • Chương trình C ++ cho mức độ của một mảng
      • Sự phức tạp
    • Sự phức tạp

Báo cáo vấn đề

Cách tiếp cận 1: Sử dụng tìm kiếm nhị phânDegree of an array problem we have given a non-empty array of non-negative integers nums, the degree of this array is defined as the maximum frequency of any one of its elements.

Thuật toán

Input: [1, 2, 2, 3, 1]

Output: 2

Cách tiếp cận 1: Sử dụng tìm kiếm nhị phân

Thuật toán

Thực hiện

Chương trình C ++ cho mức độ của một mảng

Sự phức tạp

Cách tiếp cận 2: Sử dụng băm

Thuật toán

  1. Thực hiện
  2. Chương trình C ++ cho mức độ của một mảng
  3. Sự phức tạp
    • Cách tiếp cận 2: Sử dụng băm
    • Ví dụ về mức độ của một mảng
    • Chương trình C ++ cho mức độ của một mảng
  4. Chương trình Java cho mức độ của một mảng

Thực hiện

Chương trình C ++ cho mức độ của một mảng

#include
using namespace std;
int findDegree[vector& v, int k]{
    unordered_map m;
    int ans=0;
    for[int i=0;iarr[i];
    }
    cout

Bài Viết Liên Quan

Chủ Đề