线性表--题目(从顺序表中删除所有元素值为x的元素)

分类: 数据结构 |
1.问题描述:设计一个高效算法,从顺序表中删除所有元素值为x的元素,要求空间复杂度为O(1)
2.解题思路:(1)首先确定顺序表L中第一个值为x的元素的位置i,然后依次检查L.data[i+1]~L.data[L.length-1]中每个元素L.data[j](i+1<=j
http://s11/mw690/8f767ec6gd72d91bd979a&690
(2)从头开始扫描顺序表L,用k记录下元素值等于x的元素个数,对于不等于x的元素,前移k个位置。这种算法的时间复杂度为O(n),其中n为顺序表的长度。具体实现代码如下:
http://s2/mw690/8f767ec6g7beaf5beaaa1&690
上面两种方法的空间复杂度:由于其辅助空间不随着N的增大而增大,因此为常量级,因此,空间复杂度为O(1),满足题目要求。
2.解题思路:(1)首先确定顺序表L中第一个值为x的元素的位置i,然后依次检查L.data[i+1]~L.data[L.length-1]中每个元素L.data[j](i+1<=j
http://s11/mw690/8f767ec6gd72d91bd979a&690
(2)从头开始扫描顺序表L,用k记录下元素值等于x的元素个数,对于不等于x的元素,前移k个位置。这种算法的时间复杂度为O(n),其中n为顺序表的长度。具体实现代码如下:
http://s2/mw690/8f767ec6g7beaf5beaaa1&690
上面两种方法的空间复杂度:由于其辅助空间不随着N的增大而增大,因此为常量级,因此,空间复杂度为O(1),满足题目要求。
前一篇:Java解决约瑟夫问题
后一篇:凑100(EMC邮件面试题)