题目
思路
进行模拟,有向右上和左下两个方向的区别。分别找出在边界需要改变的坐标方法。
题解
1 | class Solution { |
- 时间复杂度:O(n + m),其中 n 是数组行数,m是数组列数
- 空间复杂度:O(1)
执行用时:104 ms, 在所有 C++ 提交中击败了8.27%的用户
内存消耗:17.8 MB, 在所有 C++ 提交中击败了78.97%的用户
通过测试用例:32 / 32
进行模拟,有向右上和左下两个方向的区别。分别找出在边界需要改变的坐标方法。
1 | class Solution { |
执行用时:104 ms, 在所有 C++ 提交中击败了8.27%的用户
内存消耗:17.8 MB, 在所有 C++ 提交中击败了78.97%的用户
通过测试用例:32 / 32
Ubuntu16.04 安装Python3以及pip3详细教程
之前学习过java知识,但都只是会用,对一些概念及一些部分的注意事项不是很清楚,所以现在系统的过一遍java知识。
为了减少搜索量,需要对火柴长度从大到小进行排序。
1 | class Solution { |
执行用时:248 ms, 在所有 C++ 提交中击败了20.09%的用户
内存消耗:9.6 MB, 在所有 C++ 提交中击败了76.84%的用户
通过测试用例:185 / 185
字符串
遍历一遍字符串,统计目标字符的个数,然后先乘100再除以字符串的大小。
1 | class Solution { |
执行用时:0 ms, 在所有 C++ 提交中击败了100.00%的用户
内存消耗:5.9 MB, 在所有 C++ 提交中击败了50.00%的用户
通过测试用例:85 / 85
数组
、排序
先计算出每个背包剩余的空间并保存至一个数组中,然后将该数组从小到大进行排序,遍历一遍,若当前位置的元素小于额外的石头数量,并且额外的石头数量大于0,则将 additionalRocks -= arr[i]
并且装满石头的背包数加一。
1 | class Solution { |
执行用时:144 ms, 在所有 C++ 提交中击败了100.00%的用户
内存消耗:87.4 MB, 在所有 C++ 提交中击败了100.00%的用户
通过测试用例:79 / 79
数组
、排序
、数学
先将所有的点按照横坐标从小到大进行排序,直接使用 sort(stockPrices.begin(), stockPrices.end());
进行排序即可。然后遍历一遍函数,每次计算当前元素和前一元素组成的线段的斜率是否和前一段斜率相同,若不同,则结果加一。需要使用一个变量记录前一斜率,再不相同时更新该变量。
sort(stockPrices.begin(), stockPrices.end());
,默认按照数组的第一列进行升序排序。
sort(stockPrices.rbegin(), stockPrices.rend());
,默认按照数组的第一列进行降序排列。
1 | class Solution { |
执行用时:392 ms, 在所有 C++ 提交中击败了100.00%的用户
内存消耗:98.3 MB, 在所有 C++ 提交中击败了100.00%的用户
通过测试用例:79 / 79
利用哈希表统计每个数字出现的次数,若次数等于 nums.size() / 2
则返回该数字。
1 | class Solution { |
执行用时:44 ms, 在所有 C++ 提交中击败了28.13%的用户
内存消耗:29.4 MB, 在所有 C++ 提交中击败了25.96%的用户
通过测试用例:102 / 102
排序后寻找中间位置的值,如果数组元素个数是奇数,则直接取中间值,如果是偶数,则取中间两值的平均值,然后遍历一遍数组,每次计算当前元素和中间值差的绝对值并加入到结果中。
1 | class Solution { |
执行用时:8 ms, 在所有 C++ 提交中击败了88.62%的用户
内存消耗:10.7 MB, 在所有 C++ 提交中击败了11.78%的用户
通过测试用例:30 / 30
暴力解法:将 words
中的单词按照 order
的字典序进行排序后与原数组进行对比,若相同则返回 true
,若存在不同则返回 false
1 | class Solution { |
执行用时:8 ms, 在所有 C++ 提交中击败了28.37%的用户
内存消耗:10.1 MB, 在所有 C++ 提交中击败了5.05%的用户
通过测试用例:120 / 120
排序
、数组
、字符串
先将 words
中的每个字符串进行排序,然后逆序遍历,若当前字符串和前一字符串相等,则删除原数组中的该位置的字符串。最后返回原数组
1 | class Solution { |
words
的大小执行用时:4 ms, 在所有 C++ 提交中击败了100.00%的用户
内存消耗:13.2 MB, 在所有 C++ 提交中击败了100.00%的用户
通过测试用例:201 / 201
数组
、排序
、数学
将特殊楼层数组 special
进行排序,然后分别计算每两个特殊楼层之间的楼层数,取最大值。然后再和两端的楼层数作比较,取最大值。
1 | class Solution { |
special
的大小执行用时:176 ms, 在所有 C++ 提交中击败了100.00%的用户
内存消耗:56.7 MB, 在所有 C++ 提交中击败了100.00%的用户
通过测试用例:80 / 80
直接进行中序遍历,当找到指定节点时,让 loop = true
,然后继续递归,若loop && !res
时,则赋值,否则 return
1 | /** |
执行用时:20 ms, 在所有 C++ 提交中击败了98.29%的用户
内存消耗:22.2 MB, 在所有 C++ 提交中击败了83.77%的用户
通过测试用例:24 / 24