自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 leetcode283:移动零(python实现)

题目描述给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。思路分析:在数组中遇到零的元素删除然后在用append()进行增加,因为append()元素默认添加在末尾。但是需要注意的是列表的元素不能随意删除,如果使用range(t),在删除的时候用到的del进行删除元素容易因为删除之后现在索引和原索引相差1个,会出

2020-08-31 20:55:15 268

原创 leetcode算法题:反转字符串(python实现)

题目描述思路分析:对于字符串的反转我们可以通过循环遍历,但是python只需要使用reverse()函数便可以一行代码解决这一道题目。代码:class Solution: def reverseString(self, s: list) -> None: """ Do not return anything, modify s in-place instead. """ return s.reverse()...

2020-08-31 16:57:26 286

原创 leetcode算法题231--判断一个数字是否为2的幂(python实现)

题目描述:思路分析:方法一:我们可以考虑使用一个基准数字1,在循环的条件下不断进行乘2运算,如果经过若干次循环存在2的某一个次幂等于n则return True否则return False代码实现:class Solution: def isPowerOfTwo(self, n: int) -> bool: k=1 while k<n: k=k*2 return n==k方法二:通过位运算符实现功能,

2020-08-29 09:27:46 529

原创 leetcode算法题:只出现一次的数字(C语言实现)

题目描述:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?实例:输入: [2,2,1]输出: 1输入: [4,1,2,1,2]输出: 4思路分析:参考答案提供的思路采取异或的做法。首先要知道异或的知识点:1、任意一个数和0异或仍然为自己2、任意一个数和自己异或是0 3、满足交换律和结合律:a⊕b⊕a=(a⊕a)⊕b=0⊕b=ba ⊕ a = 0另外:a ⊕

2020-08-28 22:01:51 226

原创 leetcode算法题--只出现一次的数字(python实现)

题目描述:思路分析:python丰富的内置函数为我们提供了更为便捷的解题方法,我们只需要用count()函数统计出现次数为1的元素,并返回就可以了。代码实现:class Solution: def singleNumber(self, nums) -> int: for i in range(len(nums)): if nums.count(nums[i])==1: return nums[i]...

2020-08-28 20:53:57 189

原创 leetcode算法题--X的平方跟(C语言实现)

简介:在上一次的博客中,我通过python语言完成这道题目,详细的题目要求可以点击这个链接地址:X的平方根代码实现int mySqrt(int x){ return sqrt(x);//C语言内置的sqrt()函数便可以实现开根号的要求,实际写代码的时候需要导入#include<math.h>库}...

2020-08-28 20:36:29 526

原创 leetcode算法题69--X的平方根(python实现)

题目描述:实现 int sqrt(int x) 函数。计算并返回 x 的平方根,其中 x 是非负整数。由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。思路分析:直接使用python的**运算或者pow()函数即可,记得将数据类型转换就行了主要代码:class Solution: def mySqrt(self, x: int) -> int: return int(x**0.5) ## 另外的一种办法 #return in

2020-08-28 20:29:36 355

原创 leetcode算法题:最后一个单词的长度(python实现)

题目描述:给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。如果不存在最后一个单词,请返回 0 。说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。在之前的博客里,我曾经用过C语言来完成这道题目,在C语言中我们可以通过反向遍历的办法去统计每个字符,最后返回最后一个单词的长度,但是在python中实现相同的功能仅需几行代码就可以实现。思路分析:不同字母也许会有空格,但是空格会影响这最后一个

2020-08-28 08:43:48 205

原创 牛客网题目:输入字符串包含数字,字母,输出首先出现三次的字母(C语言实现)

范例:ABC abb输出结果为b注意事项:大小写都计算思路分析:对于26个英文字母,就像一个统计表,每出现对应的英文字母,则表的数据自增,因此我们需要开一个数组用来统计每个字符出现的次数代码:char findcharacter(char str[]){ int i=0, char_array[26];//这里很重要,开一个数组去进行计算 for (i = 0; i <= 25; i++) char_array[i] = 0; for(i=0;s

2020-08-27 10:26:48 1428

原创 leetcode算法题--罗马数字转整数(C语言实现)

题目描述:范例:思路分析:根据题目描述以及范例在C语言的里面我们可以想到switch循环,对每个符就是不同的case,赋予不同的数值,但是,对于有规律的字符串switch并不能更好的处理,因此需要分若干类,如若某个字符是I,下一个是V,则需要进行对应的不同的运算。代码分析:#include<stdio.h>//#include <stdlib.h>int RomanToInt(char *s) { int a=0,i=0; while(s[i]!=

2020-08-27 10:17:45 271 3

原创 leetcode算法题58--最后一个单词的长度(C语言)

题目描述给定一个仅包含大小写字母和空格 ’ ’ 的字符串 s,返回其最后一个单词的长度。如果字符串从左向右滚动显示,那么最后一个单词就是最后出现的单词。 如果不存在最后一个单词,请返回 0 。说明:一个单词是指仅由字母组成、不包含任何空格字符的 最大子字符串。实例:输入: "Hello World"输出: 5思路分析:一开始我一直想着正向遍历,打算遇到空格就统计个数,可是有几种情况并不符合,因此后来采取反向遍历法,从最后一个字符开始计算,如果遍历到空格即跳出循环即可。代码int lengt

2020-08-27 10:06:45 525

原创 leetcode35--搜索插入位置(C语言做法)

题目概述:思路分析:思路分析:因为这是一个已经排序的数组(即从小到大排序),因此方法1我们可以采取顺序比较法,如果插入的数值都小于等于数组的值则返回对应的下标,如果插入的数值大于数值的最大元素,则返回数组的长度。方法一代码int searchInsert(int* nums, int numsSize, int target){ for(int i=0; i<numsSize; ++i) if(target <= nums[i]) return i; r

2020-08-27 10:00:48 289

原创 python玩转leetcode算法题:寻找两个正序数组的中位数

题目难度:困难题目描述:给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。实例nums1 = [1, 3]nums2 = [2]则中位数是 2.0nums1 = [1, 2]nums2 = [3, 4]则中位数是 (2 + 3)/2 = 2.5思路分析:将其中一个数组的元素插入到另一个数组,然后进行排序得

2020-08-20 15:03:47 480

原创 python 玩转leetcode算法题:加1

题目描述给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。实例1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123实例2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。思路分析:原本一开始只是以为简单的是列表的末端元素+1,返回整个列表就好了,便遇到了下面的情况因此决定改变方法,将

2020-08-20 14:31:59 333

原创 合并两个数组方法2--python做法

思路:将多余位置的数字删除,然后只需将nums2的数据从末端插入,然后进行排序即可class Solution(object): def merge(self, nums1, m, nums2, n): """ :type nums1: List[int] :type m: int :type nums2: List[int] :type n: int :rtype: None Do not ret.

2020-08-18 13:33:02 940

原创 leetcode 12--合并两个有序数组

题目要求:给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组说明:初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素。例子输入:nums1 = [1,2,3,0,0,0], m = 3nums2 = [2,5,6], n = 3输出: [1,2,2,3,5,6]分析:按照这样的例子,nu

2020-08-18 13:27:30 97

原创 leetcode算法题11--两数相加

难度中等描述给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头例子:思路分析:将l1和l2转变为列表,然后对各自列表求和,将整数数据转变为字符串数据类型,然后进行链表的插入即可代码展示:class Solution: def addTwoNumbers(self, l1: Li

2020-08-17 10:29:58 153

原创 leetcode算法题--中等难度Pow(x,n)

题目描述:方法1:暴力法class Solution: def myPow(self, x: float, n: int) -> float: return x**n结果展示方法2 使用pow函数class Solution: def myPow(self, x: float, n: int) -> float: return pow(x,n)结果展示:...

2020-08-16 21:28:21 220

原创 leetcode算法题--实现str Str() python实现

题目描述:此题有点像横向扫描,如果needle字符串在haystack里面,则返回该下标值,否则返回-1class Solution: def strStr(self, haystack: str, needle: str) -> int: if needle in haystack: return haystack.index(needle) else: return -1也可以参考kmp算法:https:/

2020-08-13 21:11:56 162

原创 leetcode算法题--搜索插入位置 python

题目概述:python钟append()函数可以插入相应数值,默认插入在末端,因此在列表中插入target,然后通过sort()函数从小到大进行排序,通过索引就可以获得该下标。class Solution: def searchInsert(self, nums: List[int], target: int) -> int: nums.append(target)#直接插入相关数据 nums.sort()#在排序 return nums.

2020-08-13 20:21:27 147

原创 leetcode算法题--移除元素(python)

题目概述运行结果:代码实现:class Solution: def removeElement(self, nums: list, val: int) -> int: n=nums.count(val)#统计个数 for i in range(n): nums.remove(val) return len(nums)原理解释:首先计算出val的个数,需要进行n次剔除,最后返回数组的长度即可。...

2020-08-10 13:59:50 143

原创 leetcode算法题简单难度--删除排序数组中的重复项

题目描述:我们知道集合具有无重复性,因此可以考虑将该数组转变为列表,通过求它的长度返回答案class Solution: def removeDuplicates(self, nums: List[int]) -> int: a = set(nums) # 变成集合 nums.clear() # 清空列表 a = list(a) # 集合变列表 nums.extend(a) # 将集合添加到列表 nu

2020-08-10 10:12:11 168

原创 leetcode算法题--合并两个有序链表

题目概述递归做法:class Solution: def mergeTwoLists(self, l1, l2): if l1 is None: return l2 elif l2 is None: return l1 elif l1.val < l2.val: l1.next = self.mergeTwoLists(l1.next, l2)

2020-08-10 09:30:08 105

原创 leetcode算法题返回最长公共前缀--python

题目要求:一开始我遇到这挺懵逼的,后来大概look了一下题解,然后去菜鸟教程看了一下,就有下面的思路。zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。class Solution: def longestCommonPrefix(self, strs: List[str]) -> str: s=""

2020-08-08 11:09:02 247

原创 leetcode算法题简单难度判断是否为回文数(运用python)

题目要求:代码:class Solution: def isPalindrome(self, x: int) -> bool: x=str(x)#将整数转为字符串 if x==x[::-1]:#右边是后面开始逐个比较 return True else: return False结果展示:...

2020-08-07 10:30:41 205

原创 leetcode算法题简单难度版

leetcode算法题两数之和(简单难度)用比较笨但是容易理解的方法去入手题目的要求代码class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: for i in range(0,len(nums)-1,1): for j in range(i+1,len(nums),1): if nums[i]+nums[j]==ta

2020-08-07 10:06:49 359

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除