zoukankan      html  css  js  c++  java
  • 「LeetCode」0001-Two Sum(Ruby)

    题意与分析

    题意直接给出来了:给定一个数,返回数组中和为该数(下为(x))的两个数的下标。
    这里有一个显然的(O(n))的实现:建立一个hash表,每次读入数(记作(p))的时候查询hash表中有没有(x-p),如果有,分别输出其下标;否则将(p)插入hash表。

    Ruby 相关语法

    函数(方法)定义

    和Python差不多。值得注意的是,Ruby中的方法是总有返回值的:最后一个语句的值。硬点也可以,使用return

    Hash表

    hash表可以像Python那样定义,也可以像h = Hash.new一样被定义。用法差不多。

    迭代器

    Ruby使用迭代器来遍历一个“集合”。这里用到的是each_with_index,和Python中的enumerate差不多。
    迭代器的用法具体是这样的:

    (collection).each do |variable|  
      # code...  
    end
    

    each这个迭代器的工作是遍历每个元素。类似的还有这些迭代器:

    • x.times,x为一个数字,遍历([0,x-1])
    • x.upto(y) 遍历([x,y])
    • (controller).step(x) 使得迭代的步长为(x)
    • "a good day ".each_line 遍历字符串中的每一行。

    判断语句

    Ruby有三种判断语句:

    • if语句
    • if-else语句
    • if-else-if(elsif)语句
    • 三元(缩写if语句)语句

    用法和python是类似的,不同的只有elseif:elsif而非elif
    比较有趣的类似Perl的一个语法是这样的:a=10 if a>5

    代码

    # @param {Integer[]} nums
    # @param {Integer} target
    # @return {Integer[]}
    def two_sum(nums, target)
    	search = Hash.new
    	nums.each_with_index do |val, idx|
    		i=search[target-val]
    		return [i, idx] if i!=nil
    		search[val]=idx
    	end
    end
    
  • 相关阅读:
    MySQL中默认值中用时间函数的问题
    mysql数据表的操作
    mysql数据库的基本操作
    mysql数据库的几个基本概念
    【转载】CentOS6.5_X64下安装配置MongoDB数据库
    Swap Swap,即交换分区
    linux中给PHP安装mongodb的扩展
    centos yum 安装 mongodb 以及php扩展
    设计模式主要分三个类型:创建型、结构型和行为型
    MySQL DELETE语句和TRUNCATE TABLE语句的区别
  • 原文地址:https://www.cnblogs.com/samhx/p/Leetcode-0001.html
Copyright © 2011-2022 走看看