LeetCode contest-95[876,877,👁878]
876. Middle of the Linked List
first submission
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def middleNode(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
head2=head
l=1
while head.next!=None:
head=head.next
l+=1
w=l//2+1
l=1
while head2.next!=None:
if w==l:
break
head2=head2.next
l+=1
return head2
877. Stone Game
first submission
import time
class Solution:
def stoneGame(self, piles):
"""
:type piles: List[int]
:rtype: bool
"""
Alex=0
Li=0
flag=True # t is alex,f is li
i=0
j=len(piles)-1
while i<j:
if piles[i]>=piles[j]:
num=piles[i]
i+=1
else:
num=piles[j]
j-=1
if flag:
Alex+=num
else:
Li+=num
return Alex>Li
if __name__ == "__main__":
data = [
{
"input":[5,3,4,5],
"output":True
},
];
for d in data:
print(d['input'])
# 计算运行时间
start = time.perf_counter()
result=Solution().stoneGame(d['input'])
end = time.perf_counter()
print(result)
if result==d['output']:
print("--- ok ---> spend time: ",end-start)
else:
print("--- error ---> spend time: ",end-start)
break
print()
else:
print("success")
用到了双指针哈哈,开森
878. Nth Magical Number
第N个神奇数字
如果正整数可以被 A 或 B 整除,那么它是神奇的。
返回第 N 个神奇数字。由于答案可能非常大,返回它模 10^9 + 7 的结果。
first submission
class Solution:
def nthMagicalNumber(self, N, A, B):
"""
:type N: int
:type A: int
:type B: int
:rtype: int
"""
num=0
if A>B:
A,B=B,A
ai=1
bi=1
for i in range(1,N+1):
print(i,ai,A*ai,bi,B*bi,end="")
if A*ai<B*bi:
num=A*ai
print("[1]",num)
ai+=1
elif A*ai==B*bi:
num=A*ai
print("[2]",num)
ai+=1
bi+=1
else:
num=B*bi
print("[3]",num)
bi+=1
return num
Time Limit Exceeded
Last executed input:
1000000000
40000
40000
超时是必然的。最后结束了,就做了两道题。这道超时
看下大神的答案【No.2 Neal@阳谷县 】
class Solution:
def gcd(self, a, b):
if 0 == b:
return a
return self.gcd(b, a % b)
def nthMagicalNumber(self, n, a, b):
"""
:type N: int
:type A: int
:type B: int
:rtype: int
"""
c = a * b // self.gcd(a, b)
lo, hi = 1, 1 << 60
while lo < hi:
mid = (lo + hi) // 2
t = mid // a + mid // b - mid // c
if t < n:
lo = mid + 1
else:
hi = mid
return lo % 1000000007
分析一下大神的解法
def gcd()
是求最大公约数
c = a * b // self.gcd(a, b)
求最小公倍数
lo, hi = 1, 1 << 60
构造一个大范围区间,[1,1<<60]
mid = (lo + hi) // 2
当前中点
t = mid // a + mid // b - mid // c
左半区间包含mid // a
个a
,mid // b
个b
,减去含有的最小公倍数个数mid//c
,结果t
则为左半区间满足数字的个数
if t < n:
lo = mid + 1
else:
hi = mid
和目标格式N
相比,下个目标区间
END.
第三题总结:其实我也也想到了要用最大公约数或者最小公倍数;想要判断AB含有重复的值。但是不知道可以定义一个大范围,然后二分法判断有多少个数字,以及最小公倍数的使用。数学又挡住了我。
LeetCode contest-95[876,877,👁878]的更多相关文章
- LeetCode Contest 166
LeetCode Contest 166 第一次知道LeetCode 也有比赛. 很久没有打过这种线上的比赛,很激动. 直接写题解吧 第一题 很弱智 class Solution { public: ...
- 【LeetCode】95. Unique Binary Search Trees II 解题报告(Python)
[LeetCode]95. Unique Binary Search Trees II 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzh ...
- leetcode contest 20
Q1: 520. Detect Capital Given a word, you need to judge whether the usage of capitals in it is right ...
- 【一天一道LeetCode】#95. Unique Binary Search Trees II
一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...
- 【LeetCode】95. Unique Binary Search Trees II
Unique Binary Search Trees II Given n, generate all structurally unique BST's (binary search trees) ...
- LeetCode OJ 95. Unique Binary Search Trees II
Given n, generate all structurally unique BST's (binary search trees) that store values 1...n. For e ...
- LeetCode(95): 不同的二叉搜索树 II
Medium! 题目描述: 给定一个整数 n,生成所有由 1 ... n 为节点所组成的二叉搜索树. 示例: 输入: 3 输出: [ [1,null,3,2], [3,2,null,1], ...
- [LeetCode&Python] Problem 876. Middle of the Linked List
Given a non-empty, singly linked list with head node head, return a middle node of linked list. If t ...
- [leetcode tree]95. Unique Binary Search Trees II
Given an integer n, generate all structurally unique BST's (binary search trees) that store values 1 ...
随机推荐
- Mac配置系统环境变量
最近在配置flutter的环境变量,使用: export PATH=$PATH:`pwd`/flutter/bin 然后一段时间之后发现环境变量莫名其妙的就消失了,这里有一个大坑! !!!!Mac 系 ...
- Python列表的一点用法
#python的基本语法网上已经有很多详细的解释了,写在这里方便自己记忆一些 列表相当于python中的数组,但相对于数组,列表的操作显得更为灵活 常用的操作列表的方式: List = [1,'bl ...
- sqlite3 语法
https://www.sqlite.org/index.html 官网 http://tutlane.com/tutorial/sqlite/sqlite-case-statement http: ...
- 2017年4月12日16:53:54 mysql 还有没看过的命令,spring boot rabbitmq的几种应用场景,mybaties的几种句柄及其映射规则
ON DUPLICATE KEY UPDATE rabbitmq:http://www.cnblogs.com/ityouknow/p/6120544.html http://blog.cs ...
- cmake使用方法详解
cmake 简介 CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程).他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性 ...
- https://www.cnblogs.com/wuyepiaoxue/p/5661194.html
https://www.cnblogs.com/wuyepiaoxue/p/5661194.html
- 双跑道------js分机号
博客园 首页 新随笔 联系 管理 订阅 随笔- 310 文章- 0 评论- 134 [tomcat]启动报错:Failed to initialize end point associated ...
- 使用pip命令自动生成项目安装依赖清单
Python项目中经常会带requirements.txt文件,里面是项目所依赖的包的列表,也就是依赖关系清单,这个清单也可以使用pip命令自动生成. pip命令: 1 pip freeze > ...
- 解决插值表达式闪烁问题 - v-cloak
v-cloak页面在js没有加载出来的时候,不显示该部分 linux可以通过响应式设计模式,来模拟2,3G网络 <!DOCTYPE html><html><head> ...
- 1_2_3_4_5 Html-Css
--------------------------------------------------------------------------------- HTML骨架 <HTML> ...