题意与分析

题意直接给出来了:给定一个数,返回数组中和为该数(下为\(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\ngood\n\day\n".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

最新文章

  1. C#与yaml解析
  2. [bzoj4551][Tjoi2016][Heoi2016]树
  3. HTML标签使用特写
  4. 定时组件quartz系列<一>模拟定时组件小程序
  5. TOJ3650 Legal or Not
  6. linux远程管理工具
  7. 调用firebug-lite调试ie6
  8. 清除HTML标记
  9. 小程序新能力-个人开发者尝鲜微信小程序
  10. 团队作业4——第一次项目冲刺(Alpha版本)4.24
  11. C#语言支持的特性,.NET却不支持,那么C#不被.NET支持的部分又是如何在.NET上运行的呢?
  12. app接入网易严选:webview注入js的几个坑
  13. 自动删除文件脚本(Linux shell脚本)
  14. opencv的一些功能代码
  15. win 10 安装 maven安装包
  16. MT【60】几个不常见的函数图像
  17. 【dedecms网站安全】如何防止dedecms网站被DDos攻击
  18. PHP面向对象(抽象类与抽象方法、接口的实现)
  19. pandas重置索引的几种方法探究
  20. 关于vue项目管理项目的架构管理平台

热门文章

  1. PHP----练习-----三级联动
  2. POST接口底层方法
  3. C# 文件流FileStream 实现多媒体文件复制 StreamReader StreamWriter 读取写入文本
  4. FreeRTOS 查询任务 剩余的栈空间的 方法
  5. css清除间隙
  6. 使用OpenVPN连通管理多个阿里云VPC网络
  7. redis主从架构的搭建
  8. 时间比较方法DateTime.Compare
  9. Swift_初始化
  10. java实现验证码功能主要代码