6.使用leetcode去练习语言

这篇具有很好参考价值的文章主要介绍了6.使用leetcode去练习语言。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录
  • 1 本章预览
  • 2 简单题举例
    • 2.1 题目描述
    • 2.2 题目解析
    • 2.3 题解
    • 2.4 涉及基础语法
  • 3 中等题举例
    • 3.1 题目描述
    • 3.2 题目解析
    • 3.3 题解
    • 3.4 涉及基础语法
  • 4 本章小结

1 本章预览

事实上本章并不会去讲述go语言的基础情况,而是去介绍如何使用Leetcode去帮助我们去学习go语言的基本语法,当然本章的内容也适合于其他语言。

Leetcode是一个很好的在线判题系统(Online Judge,OJ),它几乎支持所有主流语言的学习,例如C/C++,Java,Python, Go, JavaScript等等。

使用Leetcode学习编程语言有以下好处:

  1. 提供实时反馈:在线判题系统可以立即对提交的程序进行编译和执行,并返回结果,这有助于学习者及时了解自己的代码是否正确,以及程序的运行时间和内存使用情况。
  2. 自动评测:在线判题系统可以自动判断程序的正确性,这使得学习者可以专注于编写代码的逻辑,而不必担心测试和调试的问题。
  3. 适合初学者:对于初学者来说,在线判题系统提供了一个安全、可靠的环境,让他们可以自由地尝试和练习编程,不用担心会破坏或影响其他程序。
  4. 自我挑战:在线判题系统通常会有一些难度不一的题目,学习者可以通过解决这些问题来提高自己的编程技能和解决问题的能力。
  5. 社区支持:在线判题系统通常有一个社区功能,学习者可以在这里与其他人交流、分享代码和经验,这有助于提高学习者的编程技能和编程兴趣。

总之,使用在线判题系统学习编程语言可以帮助学习者提高编程技能、解决问题能力和编程兴趣。

2 简单题举例

2.1 题目描述

13. 罗马数字转整数

罗马数字包含以下七种字符: IVXLCDM

字符          数值
I             1
V             5
X             10
L             50
C             100
D             500
M             1000

例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X + II27 写做 XXVII, 即为 XX + V + II

通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:

  • I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
  • X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
  • C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。

给定一个罗马数字,将其转换成整数。

2.2 题目解析

学习完go语言的基础部分,事实上我们有多种方法去解题,为了存储罗马数字和阿拉伯数字的关系我们使用数据类型map,,转化成阿拉伯数字相加,然后我们发现遍历当前的值比当前右边的值小时要减当前值,反之加上当前值,例如IV,第1个I要减1,第2个V要加5。

看解决简单题事实上很简单,1.决定关键数据存储类型 2.决定程序的算法。为此事实上程序就是数据结构加上算法。

2.3 题解

var riMap = map[byte]int{
	'I': 1,
	'V': 5,
	'X': 10,
	'L': 50,
	'C': 100,
	'D': 500,
	'M': 1000,
}

func romanToInt(s string) int {
	ans := 0
	i := 0
	for i = 0; i < len(s)-1; i++ {
		if riMap[s[i]] < riMap[s[i+1]] {
			ans -= riMap[s[i]]
		} else {
			ans += riMap[s[i]]
		}
	}
	ans += riMap[s[i]]
	return ans
}

2.4 涉及基础语法

函数,分支选择结构,循环结构,字符串,

3 中等题举例

3.1 题目描述

8. 字符串转换整数 (atoi)

请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。

函数 myAtoi(string s) 的算法如下:

  1. 读入字符串并丢弃无用的前导空格
  2. 检查下一个字符(假设还未到字符末尾)为正还是负号,读取该字符(如果有)。 确定最终结果是负数还是正数。 如果两者都不存在,则假定结果为正。
  3. 读入下一个字符,直到到达下一个非数字字符或到达输入的结尾。字符串的其余部分将被忽略。
  4. 将前面步骤读入的这些数字转换为整数(即,"123" -> 123, "0032" -> 32)。如果没有读入数字,则整数为 0 。必要时更改符号(从步骤 2 开始)。
  5. 如果整数数超过 32 位有符号整数范围 [−2^31, 2^31 − 1] ,需要截断这个整数,使其保持在这个范围内。具体来说,小于 −2^31 的整数应该被固定为 −2^31 ,大于 2^31 − 1 的整数应该被固定为 2^31 − 1
  6. 返回整数作为最终结果。

注意:

  • 本题中的空白字符只包括空格字符 ' '
  • 除前导空格或数字后的其余字符串外,请勿忽略 任何其他字符。

3.2 题目解析

一个整数我们可以分成2个部分:1. 符号字符(或者没有) +/- 2.数字字符,我们先判断是否存在正负号,然后读取数字字符,按位相加,同时看看是否超过限制就能达到我们的目的

3.3 题解

func myAtoi(s string) int {
	ans := 0
	sign := 0
	for i := range s {
		switch {
		case s[i] == ' ' && sign == 0:  //当前空格,并且之前还未出现符号
		case s[i] == '+' && sign == 0:  //当前+,并且之前未出现符号
			sign = 1
		case s[i] == '-' && sign == 0:  //当前-,并且之前未出现符号
			sign = -1
		case s[i] <= '9' && s[i] >= '0' && sign == 0:  //当前数字字符,并且之前未出现符号
			sign = 1
			ans = ans*10 + int(s[i]-'0')
		case s[i] <= '9' && s[i] >= '0' && sign != 0: //当前数字字符,并且之前出现符号
			ans = ans*10 + int(s[i]-'0')
			if sign*ans > math.MaxInt32 { //当前数字字符超过最大值截断
				return math.MaxInt32
			}
			if sign*ans < math.MinInt32 { //当前数字字符小于最大值截断
				return math.MinInt32
			}
		default: //其他情况
			return sign * ans 
		}
	}
	return sign * ans
}

3.4 涉及基础语法

函数,分支选择结构,循环结构,数据范围(int当前是64位的,这个在第3章分析过leetcode是64位操作系统),字符串

4 本章小结

我们通过简单题和中等题的解答可以看到使用Leetcode等OJ学习语言的基础语法会变得很简单,而且成本很低。语法错误,程序正确性均由Leetcode去判定,可以提高我们的逻辑思辨能力和考虑问题的全面性,哪怕是像本次举例的题目那样简单的需求。

你别看我是很简单地写出了题解,事实上我在这些题目上面翻过不少车

如本次的中等题

6.使用leetcode去练习语言文章来源地址https://www.toymoban.com/news/detail-711132.html

到了这里,关于6.使用leetcode去练习语言的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《使用循环做一些练习》---C语言

    目录 前言: 1.练习专题 1.1打印1-100之间的奇数 1.2计算n的阶乘 1.3计算到达n阶乘的前m个阶乘相加 1.4演示字符串动态变化的效果 2.goto语句 ❤博主CSDN:啊苏要学习   ▶专栏分类:C语言◀   C语言的学习,是为我们今后学习其它语言打好基础,C生万物!   开始我们的C语言之旅吧

    2024年02月01日
    浏览(31)
  • C语言练习百题之位符号&的使用

    当使用C语言中的按位与运算符 时,需要理解其用途、应用场景、源代码示例以及相应的注意事项。以下是一篇关于C语言按位与运算符的详细文章,包括示例源代码和注释。 按位与运算符 是C语言中用于对二进制位进行逐位逻辑与操作的重要工具。它的主要功能是根据操作数

    2024年02月07日
    浏览(51)
  • 【入门篇】本章包括创建云项目、数据库的使用、云存储管理、云函数的基本使用、实战举例(小程序之云函数开发入门到使用发布上线实操)

    云函数 云函数相当于服务器接口的概念,它并属于小程序端代码。它是以函数的形式运行后端代码来响应事件以及调用其他服务。运行环境是Node.js。 一、基创建云函数项目 打开微信开发者工具: 打开微信开发者工具,并登录你的微信开发者账号。 创建项目: 如果还没有创

    2024年04月26日
    浏览(40)
  • javaee springMVC的简单使用 jsp页面在webapp和web-inf目录下的区别

    放在webapp目录下的jsp页面可以直接通过URL访问到,放在web-inf目录下的页面,只能通过程序的转发或者重定向访问。

    2024年02月09日
    浏览(39)
  • 【JAVA学习笔记】 57 - 本章作业

    https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter14/src/com/yinhai/homework 目录 项目代码 1. 2. 3. 4.试分析HashSet和TreeSet分别如何实现去重的 5. 6. (1)封装个新闻类,包含标题和内容属性,提供get, set方法, 重写toString方法,打印对象时只打印标题; (2)只提供一个带参数的构造器

    2024年02月06日
    浏览(37)
  • nodejs实现解析chm文件列表,无需转换为PDF文件格式,在线预览chm文件以及目录,不依赖任何网页端插件

    特性: 1、支持任意深度的chm文件解析 2、解析后内容结构转换为tree数据呈现 3、点击树节点可以在html实时查看数据  4、不依赖任何浏览器端插件,兼容性较好

    2024年02月13日
    浏览(48)
  • 前端实现PDF预览:简单而高效的方法

    PDF是一种常用的文件格式,但在网页中直接预览PDF文件可能会带来一些挑战。本文将介绍一种简单而高效的前端方法,以实现PDF文件的预览。 最简单的方法是使用iframe标签来嵌入PDF文件。代码如下所示: 上述代码通过设置iframe的src属性为PDF文件的路径,将PDF文件嵌入到网页

    2024年02月05日
    浏览(47)
  • 算法练习--leetcode 数组

    输入n阶楼梯,每次爬1或者2个台阶,有多少种方法可以爬到楼顶? 示例1:输入2, 输出2 一次爬2阶; 一次爬1阶; 故两种方法。 示例2: 输入3, 输出3 三个1; 一个1 + 一个 2; 一个2 + 一个1; 思路分析: 采用递归求解 python实现: java实现 : 类似爬楼梯问题。   给定一个 整

    2024年02月14日
    浏览(40)
  • 【LeetCode SQL练习笔记】

    175. 组合两张表 181. 超过经理收入的员工* 182. 查找重复的电子邮箱

    2024年02月16日
    浏览(37)
  • 数组练习 Leetcode 66.加一

     题目传送门:66.加一 给定一个由  整数  组成的  非空  数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储 单个 数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 示例 2: 示例 3: 提示: 1 = di

    2024年01月22日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包