【C语言刷LeetCode】索引篇

今天开始记录下自己用C语言刷的LeetCode吧,曾经以为选择做嵌入式就不用太理会算法,C语言不可能刷LeetCode,但最后居然不搞嵌入式了,C语言也必须要刷题,终究逃不了。

1.两数之和(E)

2. 两数相加(M)

3. 无重复字符的最长子串(M)

5.最长回文子串(M)

7. 整数反转(E)

9. 回文数(E)

11. 盛最多水的容器(M)

13. 罗马数字转整数(E)

14. 最长公共前缀(E)

 15. 三数之和(M)

16. 最接近的三数之和(M)

19. 删除链表的倒数第N个节点(M)

20. 有效的括号(E)

21. 合并两个有序链表(E)

22. 括号生成(M)

24. 两两交换链表中的节点(M) 

25. K 个一组翻转链表(H)

26. 删除排序数组中的重复项(E)

27. 移除元素(E)

32. 最长有效括号(H)

33. 搜索旋转排序数组(M)

34. 在排序数组中查找元素的第一个和最后一个位置(M)

35. 搜索插入位置(E)

40. 组合总和 II(M)

45. 跳跃游戏 II(H)

 48. 旋转图像(M)

49. 字母异位词分组(M)

50. Pow(x, n)(M)

53. 最大子序和(E)

55. 跳跃游戏(M)

56. 合并区间(M)

64. 最小路径和(M)

67. 二进制求和(E)

70. 爬楼梯(E)

78. 子集(M)

86. 分隔链表(M)

90. 子集 II(M)

92. 反转链表 II(M)

93. 复原IP地址(M)

98. 验证二叉搜索树(M)

101. 对称二叉树(E)

110. 平衡二叉树(E) 

112. 路径总和(E)

113. 路径总和 II(M)

114. 二叉树展开为链表(M)

  • 5
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你解答这个问题。 题目描述: 给定一个 n x n 的网格,每个单元格都有一个正整数,代表从该点出发的初始能量。你的初始位置是左上角,即 (0,0) ,目标位置是右下角,即 (n-1,n-1)。你只能向右或向下走。在你走过某个单元格时,你需要用掉那个单元格中的能量(即:如果你在单元格(i,j)上,那么你需要用掉 grid[i][j] 的能量)。如果你没有足够的能量,那么你不能继续前进。你的目标是在保持最小初始能量的情况下,找到一条从左上角到右下角的路径,使得沿路径所需的能量最小化。 注意:当你经过某个单元格时,你需要跟踪你通过该单元格所剩余的能量(如果剩余能量为正数,则保留,否则将其归零)。 解题思路: 本题可以使用动态规划来解决。我们定义 dp[i][j] 表示从左上角到 (i, j) 位置所需要的最小初始能量。显然,dp[0][0] = grid[0][0]。 对于第一行和第一列,由于我们只能向右或向下走,因此我们可以得到: dp[0][j] = max(dp[0][j-1], grid[0][j]) dp[i][0] = max(dp[i-1][0], grid[i][0]) 对于其他位置,我们可以通过向右或向下移动到达该位置。因此,我们可以得到: dp[i][j] = min(max(dp[i-1][j], dp[i][j-1]) - grid[i][j], 0) + grid[i][j] 由于最终状态是 dp[n-1][n-1],因此我们可以得到最终的答案为 max(dp[n-1][n-1], 1)。 代码实现: ```c int calculateMinimumHP(int** dungeon, int dungeonSize, int* dungeonColSize){ int m = dungeonSize, n = dungeonColSize[0]; int dp[m][n]; dp[0][0] = dungeon[0][0]; for (int j = 1; j < n; j++) { dp[0][j] = max(dp[0][j-1], dungeon[0][j]); } for (int i = 1; i < m; i++) { dp[i][0] = max(dp[i-1][0], dungeon[i][0]); } for (int i = 1; i < m; i++) { for (int j = 1; j < n; j++) { dp[i][j] = min(max(dp[i-1][j], dp[i][j-1]) - dungeon[i][j], 0) + dungeon[i][j]; } } return max(dp[m-1][n-1], 1); } ``` 这就是使用完整的c语言完成leetcode第1514题的代码实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值