赞
踩
因为链表是倒叙,我们正好可以使用个十百的方法顺序相加,同时加入一个用来进位的temp量储存大于10的和
进而逐次递加,若一个链表无,则记为0,直到两边都指向null
线性复杂度:On
public class Solution { public ListNode AddTwoNumbers(ListNode l1, ListNode l2) { // 头节点 ListNode lnHead = null; // 当前节点 ListNode lnCurr = null; // 当前数字相加后的十位数 int temp = 0; // l1 和 l2都为空的时候循环就结束 while (l1 != null || l2 != null) { // 拿到 l1 和 l2 中的值并将其和上一循环时候的十位数相加 int sum = (l1?.val ?? 0) + (l2?.val ?? 0) + temp; // 没有头节点给头节点设值,并且 当前节点指向头节点 if (lnHead == null) { lnHead = new ListNode((sum % 10)); lnCurr = lnHead; } else { //将值给当前节点的下一个节点 lnCurr.next = new ListNode((sum % 10)); // 重新指向当前节点 lnCurr = lnCurr.next; } // 相加后的数字如果大于9 十位数标记为 1 if (sum > 9) temp = 1; else temp = 0; // 读取l1 的下一节点 l1 = l1?.next; // 读取 l2 的下一节点 l2 = l2?.next; } // 循环结束后如果十位数中有值,则给当前节点再添加下一节点 if (temp > 0) lnCurr.next = new ListNode(1); // 返回头节点 return lnHead; } }
我们按照顺序储存在记录窗口a中,如果在循环中a没用这个,就增加,如果有,去除有的这个数x在a列表以前的部分并加在后面,在最后再补充一次防止少录入最后的部分
复杂度On
class Solution(object): def lengthOfLongestSubstring(self, s): """ :type s: str :rtype: int """ if len(s)==1 or 0: return len(s) #除去例外 a=[] #储存滑动无重复数组 b=[] #储存每次存的最大个数 for i in range(0,len(s)): if s[i] not in a: a.append(s[i]) #有就加进a中 else: b.append(len(a)) n=a.index(s[i]) a=a[n+1:] a.append(s[i]) #如果没有就按序去除之前的部分,最后在加入 b.append(len(a)) #防止最后没用及时录入 return max(b)
可以反转的时候把他转化成字符串,记录正负号并变成整数,再反转,从第一个非0字符串开始切片,最后加上正负号用int强制转化
复杂度On
class Solution(object): def reverse(self, x): """ :type x: int :rtype: int """ s=str(x) k=1 if s[0]=='-': k=-1 s=s[1:] #实现对正负号的记录 l=len(s) s=s[::-1] #反转字符串 for i in range(l): if s[i]!='0': s=s[i:] break #遇到第一个非零字符就跳出循环 res=k*int(s) if res<-(2**31) or res>2**31-1: return 0 #排除异样 else: return res
class Solution(object): def findMedianSortedArrays(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int] :rtype: float """ num=[] n=len(nums1) m=len(nums2) a=b=0 #设立两个从左向右遍历的指针 while a<n and b<m: if nums1[a]<nums2[b]: num.append(nums1[a]) a=a+1 #如果1比2大,num增加并移动指针 else: num.append(nums2[b]) b=b+1 #相反另一方指针移动 if nums1[a:]: num.extend(nums1[a:]) else: num.extend(nums2[b:]) #接上重合的部分 return num[(m+n)/2] if (m+n)%2==1 else(num[(m+n-1)/2])*0.5+(num[(m+n+1)/2])*0.5 #根据奇数偶数确定中位数
class Solution(object): def findMedianSortedArrays(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int] :rtype: float """ res = 0.0 new_array = [] #储存比中位数小的数 m = len(nums1) n = len(nums2) length = m + n if not length: return False mid = 0 if length & 1: mid = int(length//2) #奇数 else: mid = int(length/2) #偶数的中位数(这个并非实际中位数的角标,是为了区分奇偶 i,j = 0,0 while len(new_array) -1 < mid: #判断小于中位数的个数小于角标 if i < m and j < n :#保证都是小于两边的中位数 if nums1[i] < nums2[j]: new_array.append(nums1[i]) i+=1 continue #哪边小就把小的加入newarry,让他储存,并让那边的指针移动 if nums1[i] >= nums2[j]: new_array.append(nums2[j]) j+=1 continue if i == m and j < n: while j < n and len(new_array) -1 < mid: new_array.append(nums2[j]) j+=1 if i < m and j == n: while i < m and len(new_array) -1 < mid: new_array.append(nums1[i]) i+=1 #一边取完比中位数小的数字就取另一变 if length & 1: res = new_array[mid] #奇数 else: res = (new_array[mid-1] + new_array[mid])/2.0 return res
第一次遍历,就开始向右查找相同的字符
然后如果能够找到就判断两者直接有没有回文
记录并更迭最大的字符串
class Solution(object): def longestPalindrome(self, s): """ :type s: str :rtype: str """ if len(s)<=1: return s #排除1的情况 long_re=s[0] for i in range(len(s)): t=s[i:] while t.rfind(t[0])>0:#向右查找相同的中心点 loc=t.rfind(t[0])#记录中心点角标 re=t[:loc+1] if re==re[::-1] and len(re)>len(long_re):#从中心判断是不是回文 long_re=re else: t=t[:loc]#不断增加会问结果 return long_re
你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。
我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:
撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G
直接输入1次#,并按下space后,将生成1级标题。
输入2次#,并按下space后,将生成2级标题。
以此类推,我们支持6级标题。有助于使用TOC
语法后生成一个完美的目录。
强调文本 强调文本
加粗文本 加粗文本
标记文本
删除文本
引用文本
H2O is是液体。
210 运算结果是 1024.
链接: link.
图片:
带尺寸的图片:
居中的图片:
居中并且带尺寸的图片:
当然,我们为了让用户更加便捷,我们增加了图片拖拽功能。
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片
.
// An highlighted block
var foo = 'bar';
一个简单的表格是这么创建的:
项目 | Value |
---|---|
电脑 | $1600 |
手机 | $12 |
导管 | $1 |
使用:---------:
居中
使用:----------
居左
使用----------:
居右
第一列 | 第二列 | 第三列 |
---|---|---|
第一列文本居中 | 第二列文本居右 | 第三列文本居左 |
SmartyPants将ASCII标点字符转换为“智能”印刷标点HTML实体。例如:
TYPE | ASCII | HTML |
---|---|---|
Single backticks | 'Isn't this fun?' | ‘Isn’t this fun?’ |
Quotes | "Isn't this fun?" | “Isn’t this fun?” |
Dashes | -- is en-dash, --- is em-dash | – is en-dash, — is em-dash |
一个具有注脚的文本。2
Markdown将文本转换为 HTML。
您可以使用渲染LaTeX数学表达式 KaTeX:
Gamma公式展示 Γ ( n ) = ( n − 1 ) ! ∀ n ∈ N \Gamma(n) = (n-1)!\quad\forall n\in\mathbb N Γ(n)=(n−1)!∀n∈N 是通过欧拉积分
Γ ( z ) = ∫ 0 ∞ t z − 1 e − t d t . \Gamma(z) = \int_0^\infty t^{z-1}e^{-t}dt\,. Γ(z)=∫0∞tz−1e−tdt.
你可以找到更多关于的信息 LaTeX 数学表达式here.
可以使用UML图表进行渲染。 Mermaid. 例如下面产生的一个序列图:
这将产生一个流程图。:
我们依旧会支持flowchart的流程图:
如果你想尝试使用此编辑器, 你可以在此篇文章任意编辑。当你完成了一篇文章的写作, 在上方工具栏找到 文章导出 ,生成一个.md文件或者.html文件进行本地保存。
如果你想加载一篇你写过的.md文件,在上方工具栏可以选择导入功能进行对应扩展名的文件导入,
继续你的创作。
注脚的解释 ↩︎
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。