lintcode 题目记录2
判断字符串是否是互为置换,类似 替换字符串之类的遍历就行了。。
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的更多相关文章
- lintcode 题目记录3
Expression Expand Word Break II Partition Equal Subset Sum Expression Expand 字符串展开问题,按照[]前的数字展开字符 ...
- lintcode题目记录4
Russian Doll Envelopes Largest Divisible Subset Two Sum - Input array is sorted Russian Doll ...
- 牛客OI周赛9-提高组题目记录
牛客OI周赛9-提高组题目记录 昨天晚上做了这一套比赛,觉得题目质量挺高,而且有一些非常有趣而且非常清奇的脑回路在里边,于是记录在此. T1: 扫雷 题目链接 设 \(f_i\) 表示扫到第 \(i\ ...
- lincode 题目记录6
the Duplicate Number 132 PatternFind 找重复的数字··直接暴力枚举是不行的···又超时提示·· 暴力枚举的写法· res=0 def findDuplicate( ...
- lincode 题目记录5
Course Schedule 安排课表 Frog Jump 最长回文字符串长度 Course Schedule 选课方案问题,题目说的很清楚了就是bfs或者dfs,然后加个字典优化,弄了好久没 ...
- 2019-中小型公司PHP面试题目记录(附带答案)
博主是三线省会城市的苦逼技术开发,主攻PHP方向,平时前后端语言也都有涉及,因为都是自学,上手就是框架,工作五年来基础补的不稳,换工作的时候苦不堪言,感觉一上来就问Ngnix的运行机制,php的被编译 ...
- 剑指offer题目记录
1.如下为类型CMyString的声明,请为该类型添加赋值运算符函数. class CMyString { public: CMyString(char* pData = NULL); CMyStri ...
- 二分查找总结及部分Lintcode题目分析 4
二分法不只能像之前的记录,可以找到index~第二种类型是找到二分答案.有以下几个例子,都是之前二分法的扩展,不再赘述,只记录下忽略的点,以后回顾多注意~ 1. wood cut class Solu ...
- 二分查找总结及部分Lintcode题目分析 3
Search in rotated sorted array,题目中也给出了相应的例子,就是在sorted array某个节点发生了翻转(ie.0 1 2 4 5 6 7 might become 4 ...
随机推荐
- redis 3.0 集群__故障测评
一, slave 是不能通过redis-cli 直接进行读写操作的,但是可以执行 keys, info 命令( 猜测类似全局性的不影响到原子性操作的命令应该都可以,没有一一试验) 二,集群中的某节点异 ...
- 编译图像质量分析库iqa
介绍 iqa库是我在GitHub上偶然发现的一个具有MSE, PSNR, SSIM, MS-SSIM等图像质量分析算法的库,觉得还不错,就把它下载下来编译,编译后生成静态的库.以下是我总结的编译方 ...
- css ie6双倍margin现象
IE6双倍margin bug 当出现连续浮动的元素,携带和浮动方向相同的margin时,队首的元素,会双倍marign. 解决方案: 1)使浮动的方向和margin的方向,相反. 所以,你就会发现, ...
- Intellij idea maven 引用无法搜索远程仓库的解决方案
打开项目的POM文件,ALT+Insert键 出来添加引用的窗口 说明无法搜索到远程仓库,需要怎么设置呢? 在intellij idea 中配置好maven后 是这样的 如果加载失败,则需要自定义远程 ...
- ModuleNotFoundError: No module named 'Crypto'
pycrypto已经舍弃了使用pycryptodome,pip uninstall pycrypto,然后安装pycryptodome,pip install pycryptodome 可能还需要改名 ...
- ${__BeanShell(${SCRIPT})}
通过将变量名称括在' $ { '和' } '中来引用测试元素中的变量. 函数以相同的方式引用,但按照惯例,函数名称以“ __ ” 开头,以避免与用户值名称冲突*.有些函数使用参数来配置它们,这些函数用 ...
- Stack — 20181121
12. Min Stack public class MinStack { Stack<Integer> stack; Stack<Integer> minStack; pub ...
- jquery ajax的getJSON使用
getJSON的定义和用法 通过 HTTP GET 请求载入 JSON 数据. 在 jQuery 1.2 中,您可以通过使用 JSONP 形式的回调函数来加载其他网域的 JSON 数据,如 " ...
- Jmeter运行badboy录制的脚本
前言 进行性能测试的站点为:在本地搭建的bugfree 一.badboy录制脚本 1.启动bugfree服务 2.打开badboy进行脚本录制 2.1.打开badboy,按下启动录制按钮,在地址栏中输 ...
- Cookie跳转登录验证码
对于web应用来说,大部分的系统在用户登录时都要求用户输入验证码,验证码的类型的很多,有字母数字的,有汉字的,甚至还要用户输入一条算术题的答案的, 对于系统来说使用验证码可以有效果的防止采用机器猜测方 ...