Code bị TLE. Thêm dấu @ vào beat 46%
Python:class Solution: @cache def tribonacci(self, n: int) -> int: if n == 0: return 0 elif n == 1: return 1 elif n == 2: return 1 else: return self.tribonacci(n-1) + self.tribonacci(n-2) + self.tribonacci(n-3)
class Solution:
def longestIdealString(self, s: str, k: int) -> int:
dp = [0]*26
ans = 0
for char in s:
index = ord(char) - ord('a')
longestIdealSubsequence = 0
for i in range(max(index - k, 0), min(index + k + 1, 26)):
longestIdealSubsequence = max(longestIdealSubsequence, dp[i])
dp[index] = longestIdealSubsequence + 1
ans = max(ans, dp[index])
return ans
Giống tôi, định 2 vòng for i: 0-> n và j: = 0 ->i. Pass đc 2 test đầuSubmit sai 2 lần do xài vòng for ko đúng tào lao quá
Bài DP này hay phết nhưng mà ý tưởng thì cũng dễ nhìn ra.
Python:class Solution: def longestIdealString(self, s: str, k: int) -> int: dp = [0]*26 for char in s: index = ord(char) - ord('a') maxSofar = 0 for i in range(max(index - k, 0), min(index + k + 1, 26)): maxSofar = max(maxSofar, dp[i] + 1) dp[index] = maxSofar return max(dp)
int longestIdealString(string s, int k) {
int dp[26] = {};
int res = 0;
for (auto& i : s) {
i = i - 'a';
for (int j = max(i - k, 0); j <= min(25, i + k); ++j)
dp[i] = max(dp[i], dp[j]);
res = max(res, ++dp[i]);
}
return res;
}
Vẫn post được mà, thỉnh thoảng bị thôi fence. Ko hiểu bị gìNay lại ko post dc code python à
function longestIdealString(s: string, k: number): number {
const dp: number[] = Array(128).fill(0);
for (const c of s) {
const i: number = c.charCodeAt(0);
const start: number = Math.max(0, i - k);
const end: number = Math.min(127, i + k + 1);
dp[i] = Math.max(...dp.slice(start, end)) + 1;
}
return Math.max(...dp);
}
class Solution:
def longestIdealString(self, s: str, k: int) -> int:
longest_chr = [0]*26
for c in s:
start = max(0, ord(c)-97-k)
end = min(26, ord(c)-97+k)
longest_chr[ord(c)-97] = max(longest_chr[start:end+1])+1
return max(longest_chr)
Nay lại ko post dc code python à
T cứ post code có hàmVẫn post được mà, thỉnh thoảng bị thôi fence. Ko hiểu bị gì
chr
là bị lỗi, không rõ tại sao, xóa cái chỗ chr là hết lỗiclass Solution:
def longestIdealString(self, s: str, k: int) -> int:
map = defaultdict(int)
n = len(s)
dp = [0] * n
for i, c in enumerate(s):
map[c] = max(0, map[c])
start, end = max(97, ord(c) - k), min(122, ord(c) + k) + 1
v = 0
for j in range(start, end):
# c1: char from int
if c1 in map:
v = max(v, map[c1] + 1)
dp[i] = v
map[c] = v
return max(dp)
T cứ post code có hàmchr
là bị lỗi, không rõ tại sao, xóa cái chỗ chr là hết lỗi
View attachment 2460135
class Solution {
public int longestIdealString(String s, int k) {
char[] c = s.toCharArray();
int[] dp = new int[c.length];
int[] letter = new int [26];
Arrays.fill(letter, -1);
letter[c[0]-'a']=0;
Arrays.fill(dp,1);
for(int i =1 ;i<c.length;i++){
for(int j=0;j<=k;j++){
int ci = c[i]-'a';
if(ci-j>=0 && letter[ci-j]!=-1){
dp[i]=Math.max(dp[i],dp[letter[ci-j]]+1);
}
if(ci+j<26 && letter[ci+j]!=-1){
dp[i]=Math.max(dp[i],dp[letter[ci+j]]+1);
}
}
letter[c[i]-'a']=i;
}
int ans =0;
for(int i:dp){
ans=Math.max(ans,i);
}
return ans;
}
}
Đệt good catch bro thì ra là thếT cứ post code có hàmchr
là bị lỗi, không rõ tại sao, xóa cái chỗ chr là hết lỗi
View attachment 2460135
class Solution:
def longestIdealString(self, s: str, k: int) -> int:
maxHash = [0 for i in range(26)]
for char in s:
charHash = ord(char) - 97
maxCur = 0
minRange = max(0, charHash - k)
maxRange = min(25, charHash + k)
maxHash[charHash] = max(maxHash[minRange:maxRange+1]) + 1
return max(maxHash)
var longestIdealString = function(s, k) {
const arr = Array.from({ length: 26 }, () => 0);
const rmq = (l, h) => {
let i = l;
for (let j = l + 1; j < h; j++) {
if (arr[j] > arr[i]) {
i = j;
}
}
return i;
}
const sub = (u, v) => {
return u.charCodeAt(0) - v.charCodeAt(0);
}
for (const ch of s) {
const l = Math.max(0, sub(ch, 'a') - k);
const h = Math.min(26, sub(ch, 'a') + k + 1);
const i = rmq(l, h);
arr[sub(ch, 'a')] = arr[i] + 1;
}
return _.max(arr);
};
class Solution(object):
def longestIdealString(self, s, k):
dp = [0] * 26
for c in s:
curr = ord(c) - 97
dp[curr] = 1 + max(dp[max(curr - k, 0) : min(curr + k + 1 , 26)])
return max(dp)