获得徽章 0
每日一题
class Solution {
public boolean checkTree(TreeNode root) {
return root.val == root.left.val + root.right.val;
}
}
展开
评论
每日一题
class Solution {
public int sum(int num1, int num2) {
return num1 + num2;
}
}
展开
评论
每日一题
class Solution:
def maxSizeSlices(self, slices: List[int]) -> int:
def calculate(slices):
N, n = len(slices), (len(slices) + 1) // 3
dp = [[-10**9 for i in range(n + 1)] for j in range(N)]
dp[0][0], dp[0][1] = 0, slices[0]
dp[1][0], dp[1][1] = 0, max(slices[0], slices[1])
for i in range(2, N, 1):
dp[i][0] = 0
for j in range(1, n + 1, 1):
dp[i][j] = max(dp[i - 1][j], dp[i - 2][j - 1] + slices[i])
return dp[N - 1][n]
v1 = slices[1:]
v2 = slices[0:-1]
ans1 = calculate(v1)
ans2 = calculate(v2)
return max(ans1, ans2)
展开
评论
每日一题

class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
if not l1: return l2 # 终止条件,直到两个链表都空
if not l2: return l1
if l1.val <= l2.val: # 递归调用
l1.next = self.mergeTwoLists(l1.next,l2)
return l1
else:
l2.next = self.mergeTwoLists(l1,l2.next)
return l2
展开
评论
每日一题
class Solution:
def circularGameLosers(self, n: int, k: int) -> List[int]:
visit = [False] * n
i = k
j = 0
while not visit[j]:
visit[j] = True
j = (j + i) % n
i += k
ans = []
for i in range(n):
if not visit[i]:
ans.append(i + 1)
return ans
展开
评论
每日一题

class Solution:
def findReplaceString(self, s: str, indices: List[int], sources: List[str], targets: List[str]) -> str:
a = sorted(zip(indices, sources, targets), key=lambda x:-x[0])
s = list(s)
for x, y, t in a:
if "".join(s[x:x+len(y)]) == y:
s[x:x+len(y)] = list(t)
return "".join(s)
展开
评论
每日一题
class Solution {
public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {
if (t1 == null) {
return t2;
}
if (t2 == null) {
return t1;
}
TreeNode merged = new TreeNode(t1.val + t2.val);
merged.left = mergeTrees(t1.left, t2.left);
merged.right = mergeTrees(t1.right, t2.right);
return merged;
}
}
展开
评论
每日一题

class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
for (int i = 0; i != n; ++i) {
nums1[m + i] = nums2[i];
}
sort(nums1.begin(), nums1.end());
}
};
展开
评论
每日一题
ListNode* mergeTwoLists(ListNode *a, ListNode *b) {
if ((!a) || (!b)) return a ? a : b;
ListNode head, *tail = &head, *aPtr = a, *bPtr = b;
while (aPtr && bPtr) {
if (aPtr->val < bPtr->val) {
tail->next = aPtr; aPtr = aPtr->next;
} else {
tail->next = bPtr; bPtr = bPtr->next;
}
tail = tail->next;
}
tail->next = (aPtr ? aPtr : bPtr);
return head.next;
}
展开
评论
每日一题
class Solution {
public:
int diagonalSum(vector<vector<int>>& mat) {
int n = mat.size(), sum = 0;
for (int i = 0; i < n; ++i) {
for (int j = 0; j < n; ++j) {
if (i == j || i + j == n - 1) {
sum += mat[i][j];
}
}
}
return sum;
}
};
展开
评论
每日一题
class Solution:
def minFallingPathSum(self, grid: List[List[int]]) -> int:
n = len(grid)
d = [[10**9 for _ in range(n)] for _ in range(n)]
for i in range(n):
d[0][i] = grid[0][i]
for i in range(n):
for j in range(n):
for k in range(n):
if j == k:
continue
d[i][j] = min(d[i][j], d[i - 1][k] + grid[i][j])
return min(d[n - 1])
展开
评论
每日一题
class Solution {
public:
int subtractProductAndSum(int n) {
int m = 1, s = 0;
while (n) {
int x = n % 10;
n /= 10;
m *= x;
s += x;
}
return m - s;
}
};
展开
评论
每日一题
class Solution:
def maxAbsoluteSum(self, nums: List[int]) -> int:
positiveMax, negativeMin = 0, 0
positiveSum, negativeSum = 0, 0
for n in nums:
positiveSum += n
positiveMax = max(positiveMax, positiveSum)
positiveSum = max(0, positiveSum)

negativeSum += n
negativeMin = min(negativeMin, negativeSum)
negativeSum = min(0, negativeSum)

return max(positiveMax, -negativeMin)
展开
评论
下一页
个人成就
文章被阅读 1,351
掘力值 107
收藏集
0
关注标签
0
加入于