刷题
isabel__
这个作者很懒,什么都没留下…
展开
-
Leetcode刷题-合并两个有序链表
题目思路一:两个链表从头开始对比l1.val和l2.val的值,选出值较小的结点的next指向其余节点的合并结果。(递归)解法一:#定义链表的结点class ListNode: def __init__(self, x): self.val = x self.next = None#通过输入的列表来生成链表def generateList(...原创 2020-04-21 01:23:15 · 261 阅读 · 0 评论 -
Leetcode刷题-有效的括号
题目思路:先把符号输入字典,每对符号的左半边设置为位置,右半边设置为值,方便后续进行比对。利用出入栈的思想,设置栈stack,将字符串中的值cpush入栈直至c不在字典里。然后再将栈里的值pop出来与c对比,注意此时pop出来的值是字典的位置索引dic[stack.pop()],所对应的值应该是符号的右半边。如果此时dic[stack.pop()]与c不相等,则说明不是一对,返回false...原创 2020-04-20 00:41:48 · 117 阅读 · 0 评论 -
Leetcode刷题-最长公共前缀
题目思路:把数组里的字符串进行纵向对比。str[j][i]中,j表示第几个字符串,从0开始;i表示字符串的第几个位置,从0开始。从第0位开始,将第一个字符串的值strs[0][i]分别与后两个字符串对应位置的值strs[j][i]进行对比,若相等,则继续;直到不等,则返回第一个字符串中从0到当前i所指向的值strs[0][0:i]解法:def longestCommonPrefix(st...原创 2020-04-16 18:45:57 · 126 阅读 · 0 评论 -
Leetcode刷题-罗马数字转整数
题目思路:将字符:数值存入哈希表Roman2Int。从左到右遍历输入的字符。正常情况是左边字符大于右边字符,即s[i]>s[i+1],则加上左边字符代表的数字。遇到左边字符小于右边字符的情况,即s[i]<s[i+1]时,则需要减去左边字符代表的数字。Int用于存储转化来的数字,初始化为0,随着循环加上或减去字符代表的数字。def romanToInt(s: str) ->...原创 2020-04-08 16:10:11 · 126 阅读 · 0 评论 -
Leetcode刷题-回文数
回文数题目一:解法一:思路:先将x转化为字符串的形式,再把它放到list中:lst = list(str(x))。定义头尾两个指针L=0,R=len(lst)-1,使头尾两个值进行比对,若相等,则左指针向右移一位,右指针向左移一位继续比对。若不等,则退出,返回False。此处不必特意判断正负,负数的第一位-与最后一位比对会返回False。def isPalindrome(x: int) ...原创 2020-04-05 15:25:12 · 161 阅读 · 0 评论 -
Leetcode刷题-整数反转
整数反转解法一:思路:先将x转化为字符串形式str(x),然后判断x是否负数,def reverse_force(x: int) -> int: str_x = str(x) if str_x[0] != "-": str_x = str_x[::-1] #从后往前数,步进为1(321 x = int...原创 2020-03-28 14:39:13 · 195 阅读 · 0 评论 -
Leetcode 刷题-两数之和
两数之和题目:解题关键:num2 = target - num1。 要找的num2也在list中,首先对num2是否存在进行判断:if ( target - num1) in nums;如果结果是True,可进行下一步判断:num2是否和num1相等,若相等,二者是否是同一个数:(nums.count(target - nums[i]) == 1)&(target - nums[i...原创 2020-03-24 17:10:21 · 125 阅读 · 0 评论