判断字符串是否是互为置换,类似 替换字符串之类的遍历就行了。。

class Solution:
# @param {string} A a string
# @param {string} B a string
# @return {boolean} a boolean
def stringPermutation(self, A, B):
# Write your code here
if len(A) !=len(B):return False
lb=[]
for b in B:,
lb.append(b)
for a in A:
if a in lb:
lb.remove(a)
else:
return False
return True

取滑动窗口的中位数,如果窗口是偶数取中间两个比较小的那个,这个做起来有点复杂,一开始上来直接遍历加排序,总是提示超时,后来优化排序除第一次用全排,后边直接用插入排序,直接用插入排序还是慢,因为上次的序列是一个有序序列可以用二分法优化

插入排序,这么做以后每次构造新的序列移除一个元素还是耗时多,因为本身上次序列是有序的,也可以直接通过索引知道要移除的值,再用二分查找,得出索引,直接移除该索引对应的值

class Solution:
"""
@param nums: A list of integers.
@return: The median of element inside the window at each moving.
"""
def medianSlidingWindow(self, nums, k):
# write your code here
le = len(nums)
res = []
a = []
def sort(b,first=True):
if len(b) < 2:return b
if first:
return sortq(b)#快速排序,只运行第一次
else:#二分插入
insert = b[len(b) - 1]
low=0
high=len(b)-2
while low<=high:
mid=(low+high)//2;
if insert>b[mid]:
low=mid+1
else:
high=mid-1
b.insert(low,insert)
b.pop()
return b def sortq(b):
if len(b)<2:
return b
else:
q=b[0]
less=[i for i in b[1:] if i<=q]
greator=[i for i in b[1:] if i>q]
return sortq(less)+[q]+sortq(greator) for i in range(le):
if i + k > le: break
if i == 0:
a = nums[i:i + k]
b = sort(a)
else:
n=len(b)
l = 0
r = n - 1
target = nums[i - 1]
while l <= r:#二分查找
mid = (l + r) // 2
if b[mid] > target:
r = mid-1
elif b[mid]<target:
l = mid+1
else:
b.pop(mid)
break
b.append(nums[i+k-1])
b=sort(b,first=False)
l=len(b)
if l % 2 == 0:
res.append (b[l / 2] if b[l / 2 - 1] > b[l / 2] else b[l / 2 - 1])
else:
res.append(b[l // 2])
return res

接雨水二 ,一个二维的数组,每个位置有一个高度,问可以接多少水·

整了半天没整明白,网上查了下,从外围构造一个范围,用优先队列做存储,每次pop最小的一个高度然后判断其上下左右的位置是否比该值小,小就又水流入,然后把该点push队列,标记高度为高的哪一个,标记访问到的位置,循环直到队列没有为止

python 又自带的优先队列 heapd,但是这里需要自定义一个类型,看了一下heapd里面的实现代码做大小比较的时候是直接用的运算符,这里直接把自定义类型重载运算符就可以直接用了

class Solution:
class bar(object):
def __init__(self, x, y, h):
self.x = x
self.y = y
self.h = h def __lt__(self, other):
return self.h < other.h def __gt__(self,other):
return self.h > other.h def __eq__(self, other):
return self.h == other.h
# @param heights: a matrix of integers
# @return: an integer
def trapRainWater(self, heights):
# write your code here
res=0
import heapq
pq = []
heapq.heapify(pq)
cols=len(heights[0])
rows=len(heights)
visit=[None]*rows
for i in range(rows):
visit[i]=[False]*cols for i in range(cols):
heapq.heappush(pq,self.bar(0,i,heights[0][i]))
visit[0][i]=True
heapq.heappush(pq, self.bar(rows-1, i, heights[rows-1][i]))
visit[rows-1][i] = True for i in range(1,rows-1):
heapq.heappush(pq, self.bar(i, 0, heights[i][0]))
visit[i][0] = True
heapq.heappush(pq, self.bar(i, cols-1, heights[i][cols-1]))
visit[i][cols-1] = True dir=[[-1,0],[1,0],[0,-1],[0,1]]
while len(pq)>0:
b = heapq.heappop(pq)
for i in dir:
x=b.x+i[0]
y=b.y+i[1]
if x>=0 and x<rows and y>=0 and y<cols and not visit[x][y]:
visit[x][y] = True
res=res+max(0,b.h-heights[x][y])
if heights[x][y]>b.h:h=heights[x][y]
else: h=b.h
nb=self.bar(x,y,h)
heapq.heappush(pq,nb) return res

链表求和问题,两个链表,每个节点都只有一位数字,表示一个多位数,输出相加以后的数字的链表形式,这里把两个链表都直接累加程字符串,然后转成数字相加,再转成字符串然后组装成链表输出

class Solution:
# @param l1: the first list
# @param l2: the second list
# @return: the sum list of l1 and l2
def addLists2(self, l1, l2):
# Write your code here
strl1 = ''
current = l1
while current is not None:
strl1 = strl1+str(current.val)
current = current.next
intl1 = int(strl1)
strl1 = ''
current = l2
while current is not None:
strl1 = strl1 + str(current.val)
current = current.next
intl2 = int(strl1)
val = str(intl1+intl2)
res = None
last = None
for s in val:
v = int(s)
if res is None:
res = ListNode(v)
last=res
else:
last.next = ListNode(v)
last = last.next
return res

回文数,转成字符串倒个序,然后再转成数字,判断相等就行了

class Solution:
# @param {int} num a positive number
# @return {boolean} true if it's a palindrome or false
def palindromeNumber(self, num):
# Write your code here
strr = ''
for s in str(num):
strr = s + strr
num2=int(strr)
return num == num2

lintcode 题目记录2的更多相关文章

  1. lintcode 题目记录3

    Expression Expand  Word Break II Partition Equal Subset Sum  Expression Expand  字符串展开问题,按照[]前的数字展开字符 ...

  2. lintcode题目记录4

    Russian Doll Envelopes    Largest Divisible Subset     Two Sum - Input array is sorted Russian Doll ...

  3. 牛客OI周赛9-提高组题目记录

    牛客OI周赛9-提高组题目记录 昨天晚上做了这一套比赛,觉得题目质量挺高,而且有一些非常有趣而且非常清奇的脑回路在里边,于是记录在此. T1: 扫雷 题目链接 设 \(f_i\) 表示扫到第 \(i\ ...

  4. lincode 题目记录6

    the Duplicate Number  132 PatternFind 找重复的数字··直接暴力枚举是不行的···又超时提示·· 暴力枚举的写法· res=0 def findDuplicate( ...

  5. lincode 题目记录5

    Course Schedule 安排课表   Frog Jump  最长回文字符串长度 Course Schedule 选课方案问题,题目说的很清楚了就是bfs或者dfs,然后加个字典优化,弄了好久没 ...

  6. 2019-中小型公司PHP面试题目记录(附带答案)

    博主是三线省会城市的苦逼技术开发,主攻PHP方向,平时前后端语言也都有涉及,因为都是自学,上手就是框架,工作五年来基础补的不稳,换工作的时候苦不堪言,感觉一上来就问Ngnix的运行机制,php的被编译 ...

  7. 剑指offer题目记录

    1.如下为类型CMyString的声明,请为该类型添加赋值运算符函数. class CMyString { public: CMyString(char* pData = NULL); CMyStri ...

  8. 二分查找总结及部分Lintcode题目分析 4

    二分法不只能像之前的记录,可以找到index~第二种类型是找到二分答案.有以下几个例子,都是之前二分法的扩展,不再赘述,只记录下忽略的点,以后回顾多注意~ 1. wood cut class Solu ...

  9. 二分查找总结及部分Lintcode题目分析 3

    Search in rotated sorted array,题目中也给出了相应的例子,就是在sorted array某个节点发生了翻转(ie.0 1 2 4 5 6 7 might become 4 ...

随机推荐

  1. NVIDIA | 一种重建照片的 AI 图像技术

    简评:或许可以称之为「擦擦乐」~ 建议大家看看视频示例 ~ 前几天,NVIDIA 的研究人员介绍了一种新的 深度学习 方法,使用该方法可以重建缺失像素的图像内容. 这种方法被称为「image inpa ...

  2. POJ1475 Pushing Boxes(双搜索)

    POJ1475 Pushing Boxes  推箱子,#表示墙,B表示箱子的起点,T表示箱子的目标位置,S表示人的起点 本题没有 Special Judge,多解时,先最小化箱子被推动的次数,再最小化 ...

  3. vue培训记录

    在公司做了一次vue相关的培训,自己整理了一些大纲.供大家参考学习! ### 1. 项目构成及原理 [Vue](https://cn.vuejs.org/)###* 主流框架见解及差别 * react ...

  4. POJ-3126-Prime Path(BFS)

    Prime Path Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 27852   Accepted: 15204 Desc ...

  5. SQL语句之数据库操作

    SQL语句系列 1.SQL语句之行操作 2.SQL语句之表操作 3.SQL语句之数据库操作 4.SQL语句之用户管理 占坑,带写……

  6. spring测试save方法报错

    用test类测试service的save方法时,报错如下: 2018-08-24 21:52:13,506 - could not read a hi value com.mysql.jdbc.exc ...

  7. netsh命令操作防火墙

    这里的netsh命令操作防火墙主要是在Windows 7及以上版本,以示例说明: 1.防火墙入方向添加一条规则,规则名字:RDP,协议tcp,动作为允许,端口号3389:简而言之,就是允许其他机器远程 ...

  8. datatables传参

    前段时间需要修改一个项目.是拿datatables渲染的.然后需要做一个筛选.找各种文档想各种方法很麻烦.最后硬是用原生方式撸下来了. 首先他原来页面 可以看到是通过ajax方式请求了数据.那么其实筛 ...

  9. windows下hla编译环境配置(转)

    原文地址:http://blog.chinaunix.net/uid-20548989-id-1667169.html HLA简介         HLA,英文"High Level Ass ...

  10. 第六次 Scrum Meeting

    第六次 Scrum Meeting 写在前面 会议时间 会议时长 会议地点 2019/4/10 22:00 30min 大运村1号楼6F 附Github仓库:WEDO 例会照片 工作情况总结(4.10 ...