请教算法怎么入门??? 每次鼓起勇气上 leetcode 后,都要怀疑自己的智商。

2016-05-10 08:52:04 +08:00
 ren2881971

比如 这道题(据说很简单)

Given an array and a value, remove all instances of that > value in place and return the new length.

The order of elements can be changed. It doesn't matter what you leave beyond the new length. 以下是答案。

class Solution {
public:
    int removeElement(int A[], int n, int elem) {
        int i = 0;
        int j = 0;
        for(i = 0; i < n; i++) {
            if(A[i] == elem) {
                continue;
            }

            A[j] = A[i];
            j++;
        }

        return j;
    }
};

我不明白为什么要加 A[j] = A[i]; 这行代码。 真心请教怎么入门。。

14717 次点击
所在节点    算法
71 条回复
RockShake
2016-05-10 09:02:58 +08:00
从题目来看,如果只是要返回新的数组长度,这行代码有没有都没有关系,只是新拷贝一遍数组而已,你也有新的实现方式
ren2881971
2016-05-10 09:06:38 +08:00
@RockShake 我要是把那行去了 leetcode 就验证不过~
kevinzhwl
2016-05-10 09:11:18 +08:00
要求的结果是 2 个
Remove .....and return....
Ulu
2016-05-10 09:13:03 +08:00
维护两个 index : j 表示新的数组, i 表示旧的数组并用于遍历。在新的数组的位置 j 上只拷贝符合要求的数值并递增 j ,不然什么也不做。
kindjeff
2016-05-10 09:13:31 +08:00
因为有两个要求第一个是 value in place
Marfal
2016-05-10 09:13:44 +08:00
看书先,没有什么比看书更快,密度更高的入门方式了。

然后就是刷题+总结思考
ren2881971
2016-05-10 09:13:56 +08:00
@kevinzhwl  好吧。。 不光是返回长度 还要remove。。。。
songkaiape
2016-05-10 09:14:00 +08:00
@ren2881971 remove all instances of that > value in place , leetcode 上他本身有很多个 testcase 来验证你的提交所以这个估计是验证了处理后的字符串吧,之前用 python 做一个题目然后因为 python int 类型无上限然后就报错了,就是得加上整形上限限制才能通过
lsmgeb89
2016-05-10 09:15:16 +08:00
这个不能再简单了吧……

《算法导论》呗……
RockShake
2016-05-10 09:18:50 +08:00
@ren2881971 对的,要删除所有的大于数值,这个还是很简单的,多做题目就好了
srlp
2016-05-10 09:24:06 +08:00
因为需要记录新数组长度,把不符合条件的元素移动到新长度以后的位置里面。
n6DD1A640
2016-05-10 09:26:52 +08:00
zhujin
2016-05-10 09:36:42 +08:00
有个疑问.可能本人英语不好.
zhujin
2016-05-10 09:37:22 +08:00
remove all instances of that > value in place
这边 不是移除 > value 的值么? 为什么用==
21grams
2016-05-10 09:40:40 +08:00
@zhujin 那是个换行符,根本不是大于号
thinkmore
2016-05-10 09:42:59 +08:00
需要返回两个值
ytmsdy
2016-05-10 09:45:45 +08:00
这题都不涉及到算法好么,只是比较简单的模拟题。
A[j]=A[i]
然后 j++
作者只是少开了一个数组,如果写成
arraylist b=new arraylist();
j=0;
b[j]=a[i];
j++
Patiencec
2016-05-10 09:49:57 +08:00
这题跟算法没关系。。。算法导论、数据结构撸两遍
Kv_se7en
2016-05-10 09:54:36 +08:00
不要怀疑,因为可能确实有问题。
loading
2016-05-10 10:06:46 +08:00
数据库部分如何解决呢?
很多时候我都是在程序里进行的操作(怪自己 SQlL 渣),题目基本都是一句 SQL 搞定的。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/277511

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX