新利国际网站新利国际网站

18新利luck
新利国际网址

LeetCode——两数之和

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

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

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

 

解题答案

  我的解题答案是用 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 用来跳出多层嵌套是很方便的),然后通过 堆空间 来把数组的两个下标返回,类似的很多题都是通过堆空间来返回值的。

 

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

, 1, 0, 9);

欢迎阅读本文章: 梅浩宇

新利国际官方导航

18新利luck