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

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. HTML5 简单Demo1

    ----------------------------页面效果图------------------------------ 截图1: 截图2: -------------------------- ...

  2. IT项目管理者常用的项目管理工具(国产VS进口)?

    对于IT项目管理工具相信很多IT项目管理者都不陌生,因为它是我们每天都要接触的,但是在前期选择IT项目管理工具的时候往往是我们最头疼的时候,所以今天我就给大家带来几款常用的国内外IT项目管理工具介绍: ...

  3. c语言-学生成绩信息系统

    #include<stdio.h> #define N 100 int Count=0; struct stu { int num; char name[20]; int computer ...

  4. 2016级算法第一次练习赛-A.群鸦的盛宴

    858 群鸦的盛宴 题目链接:https://buaacoding.cn/problem/858/index 思路 本题乍一眼看过去,你可能会想到使用一个二维数组A[51][51]来记录从i到j的路线 ...

  5. rinetd做代理!redis做代理使外网直接远程连接

    Centos7下Rinetd安装与应用   Linux下做地址NAT有很多种方法.比如haproxy.nginx的4层代理,linux自带的iptables等都能实现.haproxy.nginx就不说 ...

  6. Comparable比较器和Comparator比较器

    1.Comparable比较器 在Arrays类中存在sort()排序方法,此方法可以直接对对象数组进行排序. public static void sort(Object[] a 根据元素的自然顺序 ...

  7. MyEclipse配置,每次打开server中都没有weblogic

    最近在myeclipse新配了个weblogic,结果每次打开myeclipse在server中都看不到weblogic,得重新去配置页面走一遭才能出现.很麻烦. 后来在网上找了找,找到一个办法: 在 ...

  8. Flask基础应用

    一. Python 现阶段三大主流Web框架 Django Tornado Flask 对比 Django: 优点: 大而全,组件非常全面. 缺点: 太大,加载太大,浪费资源. Flask: 优点: ...

  9. mysql入门与进阶

    MySQL入门与进阶 需求:对一张表中的数据进行增删改查操作(CURD) C:create 创建 U:update 修改 R:read 读|检索 查询 D:delete 删除涉及技术:数据库 1.数据 ...

  10. ViewData与ViewBag的区别

    本文导读:在asp.net mvc程序设计中,传递数据常常会用到viewdata.viewbag.ViewData是一个字典集合,通过key值读取对应的value:ViewBag是动态类型,作用和Vi ...