编程学习群问题总结(一)

1.一个很大的int list,里面的数字两两出现,只有一个只出现一次,想一下怎么找出来? 如这样的一个list:[2,4,2,4,6,6,5,10,10,12,12,13,13……] 可以看到,很多值如2,4,6,10,12,13,都是两个两个的,但5只出现了一次,怎么用程序将他找出来?

思路:

解这种题目一贯的思路是先用我们自己的大脑算,然后再用计算机模拟我们的大脑。

如果是我们用纸笔去找去这个数的话,那估计是分为以下几步:

1.从第一个数开始往后看,看到2,记下来

2.往后看一个数,看到4,然后在记忆里找以前有没有看到过4,有,则是成双的,则从记忆中删除,没有则是一个新数,加入到记忆中。

用程序来实现也大致如此。我们for循环来模拟眼睛遍历。 用hashMap来模拟记忆。伪代码如下:

!!!! 这是伪代码,真实代码还需根据语法调用不同的方法

2.给定一个总和,再给一个数组,要求数组内相加后能等于那个总和的数字,并给出下标,不能用算出全部两两和的方式。如[1,3,5,4,6,7,10],数字总和是10.有两组满路, 一组是4+6=10.一组是3+7=10。

大脑的思路:

思路一:开始用眼睛往后面扫,扫到1, 然后10-1=9.然后往后看一眼,看有没有9.发现没有。 然后再往后看一个数字,看到了3. 10-3=7,往后看一眼,看到了7 ,匹配成功,然后把3和7的数组下标输出出来。

思路二:我先把这些数都背下来。 然后再开始从第一个看,看到了1,10-1=9.然后去记忆里面去找有没有9,发现记忆里面没有,然后再往后看到了3,10-3=7.在记忆里面找发现了7和7的下标。然后输出。

小伙伴们可以根据这两个思路写下代码,并比较下哪个思路好,欢迎在群里面留言或在公众号下留言讨论

3.微信小程序scroll-view组件的最后一个滑块只能滑出部分是什么原因?

scroll-view宽度固定死了 width: 100vw;