你是否在刷LeetCode的时候不知道怎么正确的提交代码?不管怎样提交都不对,可是在自己的编译器上却是能运行成功并且答案正确,又或是你不知道刷题顺序,一来就倒在了第一题两数之和面前了。看来你和最初的我一样,也遇到了这样的问题,那么可以看看我的这篇文章能否帮助到你,有什么不对的地方敬请大家批评改正
这里建议初学者的话可以按照由简单到困难,再由通过率高的到通过率低的这样刷着走,因为并不是简单的就一定简单,简单里面的题也有相对比较难的,然后就是可以按照数学->数组->链表->字符串->哈希表->双指针->递归->栈->队列这样的顺序进行刷题
接下来就是刚开始我到处碰壁的时候遇到的问题了
由于LeetCode并不是像洛谷那样要你提交完整的代码,所以我们不能直接提交完整的代码上去,那样会直接报错,刚开始的我百思不得其解,直到后面刷的题多了才发现哪个有点像函数的样子,才知道怎么正确的提交一个代码了,对于如何选题这里就不做过多赘述了,大家可以按照我说的刷题顺序自己去进行筛选刷题,接下来我将就Python、C、C++、Java具体是怎么提交自己的代码,以下我们都是以1. 两数之和举例
假如你是用Python刷题的话,那么在你点进每一题的时候,你可以看到这样一个界面
其中,左边部分是我们的题目,该题给我们一个整形数组nums和一个目标值target,要我们返回两个数之和为target的数的下标
需要注意的是这里我们不用像洛谷等大多数刷题网站一样要自己写输入输出,在上面有这样一句代码
class Solution:
def twoSum(self, nums:List[int], target:int)->List[int]:
其中nums就是题目给我们的数组,target就是那个目标值,我们只需要在下面写我们的代码即可,一定不能把这两行代码删了,刚开始的时候我以为没用就删了,所以总是提交失败,冒号后面的是该变量的数据类型,例如List[int]表示nums是一个存放整形数据的列表,箭头后面表示的是返回值的类型,最终我们 提交的代码应该是这样的
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
result = []
for i in range(len(nums)):
for j in range(i+1,len(nums)):
total = nums[i] + nums[j]
if total == target:
result.append(i)
result.append(j)
return result
对于C\C++其实差不多,我们按照上述的方法点开可以看到这样的代码块
/**
* Note: The returned array must be malloced, assume caller calls free().
*/
int* twoSum(int* nums, int numsSize, int target, int* returnSize){
}
上面是C语言的,这是C++的
class Solution {
public:
vector<int> twoSum(vector<int>& nums, int target) {
}
};
我们可以发现这好像和函数差不多,我们只需要注意到传进去的参数是什么,返回值的类型又是什么即可,然后再里面写我们的代码就好了
说了这么多了,我相信大家其实也已经发现了规律,没错,其实LeetCode要我们提交的其实并不是什么带有输入输出的完整代码,C\C++不用写头文件,只需要在函数体里面写我们的代码就好了,而Java也是类似
class Solution {
public int[] twoSum(int[] nums, int target) {
}
}
我们只需要在方法里面写我们的代码就好了,答案是通过返回值传递的,而输入则是题目就已经给我们了的,也就是通过形参传递给我们的,我们只需要直接使用就好