leetcode 27 Remove Element

本文介绍了一种用于删除数组中特定值的算法,并提供了三种实现方式。重点讲解了如何通过遍历数组并用非目标值覆盖目标值的方法来完成任务,同时保持数组长度不变。

 

27Remove Element    40.30%删除数组中的指定数字,返回非重复的元素个数j,数组本身的前j个元素改变
while True: 如果出现错误的话,可以继续循环。语句中一定要有break,否则会一直循环下去。
try:except:语句 (Python 异常处理):
                           try: 正常的操作
                           except: 发生异常,执行这块代码
                           else: 如果没有异常执行这块代码

 

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sat Jan 20 17:22:44 2018

@author: vicky
"""
#in-place,原地算法,用它的输出资料覆盖掉它的输入资料
class Solution(object):
    def removeElement(self, nums, val):
        """
        :type nums: List[int]
        :type val: int
        :rtype: int
        """
#        if len(nums)==0:
#            return 0
        j=0
        for i in range(len(nums)):
            if nums[i]!=val:
                nums[j]=nums[i]
                j=j+1
        return j


if __name__ == "__main__":
    nums=[3,2,2,3]
    val=3
    Solution().removeElement(nums,val)
    
#另一种写法
def removeElement(self, nums, val):       
        j = 0
        for c in nums:
            if c!= val:
                nums[j] = c
                j += 1
        return j

#perfect answer
def removeElement(self, nums, val):
    try: 
        #正常的操作
        while True: 
#        while True:采用该语句的核心思想是如果出现错误的话,可以继续循环。
#                   语句中一定要有结束该循环的break语句,否则会一直循环下去的。
#                   http://blog.youkuaiyun.com/geerniya/article/details/77524173
            nums.remove(val)
    except:
        #发生异常,即nums中没有val了,执行这块代码
        return len(nums)


# try/except语句
Python 异常处理 http://www.runoob.com/python/python-exceptions.html
捕捉异常可以使用try/except语句。
try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。
如果你不想在异常发生时结束你的程序,只需在try里捕获它。
语法:以下为简单的try....except...else的语法:
try:
    <语句>        #运行别的代码
except <名字>:
<语句>        #如果在try部份引发了'name'异常
except <名字>,<数据>:
    <语句>        #如果引发了'name'异常,获得附加的数据
else:
    <语句>        #如果没有异常发生

你可以不带任何异常类型使用except,如下实例
try:
    正常的操作
except:
    发生异常,执行这块代码
else:
    如果没有异常执行这块代码

 

已经博主授权,源码转载自 https://pan.quark.cn/s/a4b39357ea24 QueueForMcu 基于单片机实现的队列功能模块,主要用于8位、16位、32位非运行RTOS的单片机应用,兼容大多数单片机平台。 开源代码:https://.com/xiaoxinpro/QueueForMcu 一、特性 动态创建队列对象 动态设置队列数据缓冲区 静态指定队列元素数据长度 采用值传递的方式保存队列数据 二、快速使用 三、配置说明 目前QueueForMcu只有一个静态配置项,具体如下: 在文件 中有一个宏定义 用于指定队列元素的数据长度,默认是 ,可以根据需要更改为其他数据类型。 四、数据结构 队列的数据结构为 用于保存队列的状态,源码如下: 其中 为配置项中自定义的数据类型。 五、创建队列 1、创建队列缓存 由于我们采用值传递的方式保存队列数据,因此我们在创建队列前要手动创建一个队列缓存区,用于存放队列数据。 以上代码即创建一个大小为 的队列缓存区。 2、创建队列结构 接下来使用 创建队列结构,用于保存队列的状态: 3、初始化队列 准备好队列缓存和队列结构后调用 函数来创建队列,该函数原型如下: 参数说明: 参考代码: 六、压入队列 1、单数据压入 将数据压入队列尾部使用 函数,该函数原型如下: 参数说明: 返回值说明: 该函数会返回一个 枚举数据类型,返回值会根据队列状态返回以下几个值: 参考代码: 2、多数据压入 若需要将多个数据(数组)压入队列可以使用 函数,原理上循环调用 函数来实现的,函数原型如下: 参数说明: 当数组长度大于队列剩余长度时,数组多余的数据将被忽略。 返回值说明: 该函数将返回实际被压入到队列中的数据长度。 当队列中的剩余长度富余...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值