LeetCode1——两数之和

  最近在家拧三阶魔方,把初级的玩法掌握了,也就是可以还原六个面了,速度不快,但是也很兴奋。三阶魔方的初级玩法按照套路拧就可以了,每一步需要完成的任务,该步骤转动的方法基本都是固定的,而且变化也并不是特别多。只要按照套路多练习,不考虑速度的情况下还原一个三阶魔方还是很容易的。

LeetCode1——两数之和_第1张图片

  编程入门和还原魔方其实差不多,最初也是掌握套路后反复的练习,先从一个生手变成一个熟手,然后再去提高。分享一个段子,在知乎上看到的,如下:

  陈康肃公尧咨善射,当世无双,公亦以此自矜。尝射于家圃,有卖油翁释担而立,睨之,久而不去。见其发矢十中八九,但微颔之。
  康肃问曰:“汝亦知射乎?吾射不亦精乎?”翁曰:“无他,但手熟尔。”康肃忿然曰:“尔安敢轻吾射!”翁曰:“以我酌油知之。”乃取一葫芦置于地,以钱覆其口,徐以杓酌油沥之,自钱孔入,而钱不湿。因曰:“我亦无他,惟手熟尔。”康肃笑而遣之。 
 
 
LeetCode 题库的第一题——两数之和
  我先找了一些简单而又比较好完成的题去完成,而且一定要是自己独立完成,且直接在 LC 上写代码,不去开发环境中写代码调试,这样才有提高。题目如下图,直接从网站上把图截取过来的。
 
LeetCode1——两数之和_第2张图片

 

解题答案

  我的解题答案是用 C 语言完成的,代码如下:

 1 /**
 2  * Note: The returned array must be malloced, assume caller calls free().
 3  */
 4 int* twoSum(int* nums, int numsSize, int target) {
 5     int i, j;
 6     int *pArr = NULL;
 7     
 8     for ( i = 0; i < numsSize; i ++ ) {
 9         for ( j = i + 1; j < numsSize; j ++  ) {
10             if ( nums[i] + nums[j] == target ) {
11                 goto EXIT;
12             }
13         }
14     }
15 EXIT:
16     
17     if ( i < numsSize && j < numsSize ) {
18         pArr = (int*)malloc(2 * sizeof(int));
19         pArr[0] = i;
20         pArr[1] = j;
21     } 
22     
23     return pArr;
24 }

 

  函数的原型是LeetCode已经定义好的,最上面的注释也是LeetCode中的,代码的思路也比较简单,两层循环来进行逐个的进行 加法 运算,计算获得 target 值之后用 goto 直接跳出两层循环( C 语言不建议使用 goto 语句,但是并没有说不允许使用,直接结构清楚,goto 用来跳出多层嵌套是很方便的),然后通过 堆空间 来把数组的两个下标返回,类似的很多题都是通过堆空间来返回值的。

 

  把自己的答案分享在这里,献丑了,也许哪个大牛指点一下还会提高一下。

 

欢迎大家关注微信公众号:“码农UP2U”

LeetCode1——两数之和_第3张图片

你可能感兴趣的:(LeetCode1——两数之和)