freedom.9
Senior Member
Đổi gióMấy bài này từng ra daily rồi, mà lúc đó trư chưa làm được, may là trư để dành để phục thù chứ ko cop![]()
Ủa nhưng sao ngày nào cũng có hard vậy @freedom.9Mà sao topic khác hôm qua vậy![]()
![]()
via theNEXTvoz for iPhone
Đổi gióMấy bài này từng ra daily rồi, mà lúc đó trư chưa làm được, may là trư để dành để phục thù chứ ko cop![]()
Ủa nhưng sao ngày nào cũng có hard vậy @freedom.9Mà sao topic khác hôm qua vậy![]()
![]()
class Solution {
func longestSubarray(_ nums: [Int]) -> Int {
var maxNum = 0
var maxLen = 0
var curLen = 0
for num in nums {
if num > maxNum {
maxNum = num
curLen = 1
maxLen = 1
} else if num == maxNum {
curLen += 1
maxLen = max(maxLen, curLen)
} else {
curLen = 0
}
}
return maxLen
}
}

class Solution {
public int longestSubarray(int[] nums) {
int res = 0;
int max = 0;
int pre = 0;
int count = 0;
for(int num:nums){
if(num!=pre)
count = 1;
else
count++;
pre = num;
if(num>max){
res = 1;
max = num;
}
if(num==max)
res = Math.max(res,count);
}
return res;
}
}

class Solution {
public boolean carPooling(int[][] trips, int cap) {
int[] map = new int[1001];
for (int[] trip : trips) {
for (int i = trip[1]; i < trip[2]; i++) {
map[i] += trip[0];
if (map[i] > cap)
return false;
}
}
return true;
}
}
cái bài này y chang kiểu bài cộng interval bữa fen nào đăng đề hackerrank + lời giải nên biết giải luôn r.Mấy bài nay dễ quá, hôm nay tôi sẽ giới thiệu cho anh em 1 thuật toán là sweep line.Python:class Solution: def longestSubarray(self, nums: List[int]) -> int: maxSofar = -inf count = 0 ans = 0 for num in nums: if num > maxSofar: ans = 1 maxSofar = num count = 1 elif num == maxSofar: count += 1 ans = max(ans, count) else: count = 0 return ans
Bài toán là, có 1 cái nhà hàng và list của people, với mỗi ith people thì [start, end] là thời điểm mà người này vào nhà hàng hoặc rời nhà hàng, tính xem có tối đa bao nhiêu người ở trong 1 nhà hàng ở 1 đơn vị thời gian.
Làm xong 2 bài cơm thêm này sẽ học được thuật toán sweep line, thêm kiến thức mới vào đầu phá đảo interview
class Solution {
public boolean carPooling(int[][] trips, int capacity) {
int last =0;
for(int[] trip:trips ){
last=Math.max(trip[2], last);
}
int[] time = new int[last+1];
for(int[] trip:trips ){
int passengers= trip[0];
int from = trip[1];
int to = trip[2];
time[from]+=passengers;
time[to]-=passengers;
}
for(int i =0;i<=last;i++){
time[i]+=i==0?0:time[i-1];
if(time[i]>capacity) return false;
}
return true;
}
}
nọ bảo cùng chủ đề nên sẽ giải càng nhanh, đổi nhiều ngày nào cũng ngâm cơm thành rượu cmnr@MasonMaoSuVuong có dạy algorithms trên udemy ấy, bạn hộp thím ấy gửi coupon choEm là dân trái ngành đang muốn luyện leetcode 1 cách có hệ thống và bài bản nhất ạ. Em trước thì chỉ học chay như :stack, heap, bfs, dfs, dynamic rồi cứ đụng bài nào làm bài đó nên kiểu đôi khi có câu làm được câu không và thấy cảm giác kiến thức của mình không có cứng. Mấy bác luyện nhiều có lộ trình cụ thể nào chỉ bảo em với ạ .Xem tệp đính kèm 2682502
Bài này còn chưa dùng tới tí bit nào nữak thich bitmaskMã:class Solution: def longestSubarray(self, nums: List[int]) -> int: n = len(nums) max_value = max(nums) cnt = 0 res = 0 for i in range(n): if max_value == nums[i]: cnt += 1 else: res = max(res , cnt) cnt = 0 res = max(res , cnt) return res![]()
topic cơm tuần sau là bit manipulation nhé.impl Solution {
pub fn longest_subarray(nums: Vec<i32>) -> i32 {
let (len, _, _) = nums.iter().fold(
(0, 0, 0),
|(last_max_len, current_max_len, current_max_value), &num| match num {
v if v > current_max_value => (1, 1, v),
v if v < current_max_value => (last_max_len, 0, current_max_value),
_ => (core::cmp::max(last_max_len, current_max_len + 1), current_max_len + 1, current_max_value)
},
);
len
}
}
public class Solution {
public int LongestSubarray(int[] nums) {
int max = 0;
int count = 0;
int result = 0;
for(int i = 0; i<nums.Length; i++)
{
if(nums[i] > max)
{
max = nums[i];
count = 1;
result = 1;
}
else if(nums[i] == max)
count++;
else if(nums[i] != max)
{
count = 0;
}
result = Math.Max(result, count);
}
return result;
}
}
mỗi ngày làm 1 bài là thấy no lắm rồi, ko ăn nổi nữa Cố huynh@anoldvozer1710.v2 ko ăn cơm thêm hả Luân
Tí nữa contest cho vui Luânmỗi ngày làm 1 bài là thấy no lắm rồi, ko ăn nổi nữa Cố huynh![]()
impl Solution {
pub fn longest_subarray(nums: Vec<i32>) -> i32 {
let max =
nums.iter().copied().
fold(i32::MIN, |acc, num| acc.max(num));
let (mut left, mut right) = (usize::MAX, usize::MAX);
let (mut found, mut result) = (false, 0);
for (i, num) in nums.iter().copied().enumerate() {
match (num == max, found) {
(true, false) => (left, right, found) = (i, i, true),
(true, true) => right += 1,
(false, _) => (left, right, found) = (usize::MAX, usize::MAX, false)
}
if left != usize::MAX {
result = result.max(right - left + 1);
}
}
result as i32
}
}
lâu lắm rồi có làm đâu, trùng giờ bóng đá rồiTí nữa contest cho vui Luân![]()

class Solution:
def longestSubarray(self, nums: List[int]) -> int:
# [hint 1]: Notice that the bitwise AND of two different numbers will always be strictly less than the maximum of those two numbers.
max_num = 0
for num in nums:
if num > max_num:
max_num = num
best = streak = 0
for num in nums:
if num == max_num:
streak += 1
if streak > best:
best = streak
else:
streak = 0
return best
có đấylàm biweekly có tăng rating không mấy thím
Học @MasonMaoSuVuong àcontest có debugger ko các thím nhỉ? bth mình hay code trên ide để debug mới cọp code lên web![]()