Leetcode刷题记

这篇博客主要用来记录自己在刷leetcode中所遇到的各种坑与小细节,博主能力有限,所涉及的问题也难易不同,仅供日后自省所用。

1.Two Sum

题目描述如下:Leetcode刷题记_第1张图片
可以看到,返回的是两个下标(如果是python的话直接返回一个list),呆萌的C语言采取的解决方案便是用数组,本质就是返回一个存有2个int类型的值的内存片的首地址。然而问题来了,这个内存片该在哪片代码区进行申请呢?楼主便是在此犯了一个很严重的错误。一般我们知道,用int,float之类的关键字进行类型申明的时候只是在函数内部进行内存的申请,内存开辟是在栈中进行的,不会永久保存,一旦退出函数作用域就失活。而其实我们需要的是在堆中存放的值,可以对其进行返回首地址操作。具体来说,就是程序中堆与栈的区别,具体介绍如下截图:
Leetcode刷题记_第2张图片
Leetcode刷题记_第3张图片
更多关于C语言堆栈的区别与比较,可以参考以下博文:C语言中堆栈比较与讲解
而这道题目,楼主就是错误使用第一种stack的内存申请方式,所以出现了返回错误。只要改成使用malloc方式申请既可以解决问题。

你可能感兴趣的:(Leetcode)