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
- 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
- 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
- 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