- 博客(26)
- 收藏
- 关注
原创 python手写kmeans 简单易懂xxx
import matplotlib.pyplot as pltclass kmeans: def __init__(self,k,n,node_list,iterations): self.k = k self.n = n self.all_nodes = node_list self.iter = iterations self.center = [] self.res = []
2020-08-22 11:35:26 495
原创 牛客网编程题——纸牌游戏(很无语的一道题)
以为 是博弈的从两边拿结果是随便拿毫无技术含量n = int(input())l = [int(val) for val in input().split(' ')]l = sorted(l,reverse= True)index = 0jia = 1suma = 0sumb = 0while index < len(l): if jia == 1: suma += l[index] jia = 0 else: s.
2020-08-12 21:56:32 899
原创 牛客网编程题——第4节 课后作业1-调整队形
可能的结果只有两种即 所有G在左侧或所有B在左侧alist = [a for a in input()]t1 = 0t2 = 0index = 0lastGindex = 0while lastGindex <= len(alist) - 1 and 'G' in alist[lastGindex:]: G_index = alist.index('G') alist[G_index] ='g' t1 += G_index - index index.
2020-08-11 00:54:52 141
原创 Leetcode刷题记录——剑指 Offer 53 - II. 0~n-1中缺失的数字
class Solution: def missingNumber(self, nums: List[int]) -> int: start = 0 end = len(nums) - 1 if nums[0] != 0: return 0 while start <= end: mid = start + ((end-start)>>1) .
2020-08-07 23:21:40 251
原创 Leetcode刷题记录——441. 排列硬币
二分class Solution: def __init__(self): self.d = {} def arrangeCoins(self, n: int) -> int: if n == 0: return 0 if n == 1: return 1 elif n == 3: return 2 start = 0 .
2020-08-07 23:16:08 130
原创 Leetcode刷题记录——392. 判断子序列
动态规划建立dp表格m行n列m为s的长度n为t的长度只填主对角线及其右上部分dp[i][j]==2表示s[:i]恰是t[:j]的子串== 1 表示s[:i]是t[:j]的子串且是t[:j-1]的子串==0表示 s[:i]不是t[:j]的子串先将第一行填好我们为第一个重合的位置填2 后续填1对于第二行到第m行如果dp[i][j-1] >=1 即s[:i]是t[:j-1]的子串则s[:i]一定是t[:j]的子串 即dp[i][j] = 1否则如果s[i] == t[j] .
2020-08-07 00:55:09 197
原创 Leetcode刷题记录——剑指 Offer 35. 复杂链表的复制
分为三步第一在原链表的每个节点后面 复制一个与该节点值相等的节点 这个复制节点的random可以先不管 默认为None第二将每个原本的节点的next(即刚刚复制出的节点) 指向原本节点的random的next(原本的节点的random的next是原本节点的random指向的节点所对应的复制节点)第三只保留所有复制出的节点将原本的节点都断连最后返回第一个复制节点"""# Definition for a Node.class Node: def __init__(self, ..
2020-08-06 23:59:57 672
原创 Leetcode刷题记录——剑指 Offer 24. 反转链表
三指针法记住 不需要伪头指针先对长度小于等于2 的链表进行特殊处理对于更普通的长链表三个指针初始分别指前三个 允许第三个是None先把头指针的next指空然后在cur3不是None的时候让cur2的next指cur1然后依次将cur1指向cur2cur2指向cur3cur3指向cur3的next最后将cur2的next指向cur1返回cur2# Definition for singly-linked list.# class ListNode:# def __in.
2020-08-06 23:49:31 144
原创 牛客网编程题——牛牛的背包问题
注意 返回到上一层的值 只能是自己或由自己一条子树返回的值# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = None## # @param root TreeNode类 # @return int整型#class Solution: def __init__(self): s...
2020-08-06 00:22:11 209
原创 牛客网编程题——牛牛的背包问题
注意 当所有零食的体积和小于等于容积时直接返回2^nl = [int(val) for val in input().split(' ')]n = l[0]w = l[1]s = [int(val) for val in input().split(' ')]s = sorted(s)suma = 0def rec(last_used_space,rest,n,w): global suma if rest == [] and last_used_space <= .
2020-08-06 00:14:56 292
原创 牛客网编程题——字符串交错
三指针遇到相同的时候 可能是用A的第i个 有可能是用B的第j个递归 or即可# -*- coding:utf-8 -*-class Mixture: def chkMixture(self, A, n, B, m, C, v): # write code here if n + m != v: return False if n == 0: return True if A == C else.
2020-08-05 23:06:07 99
原创 牛客网编程题——容器装水
先找两端点 也就是说如果原数组是单增或单减的 结果就是0然后统计每个位置左侧最大的数和右侧最大的数当前位置的储水量为min(leftmax,rightmax)-自己的高度n = int(input())l = [int(val) for val in input().split(' ')]startx = -1endx = -1for i in range(len(l)-1): if l[i] > l[i+1]: startx = i + 1 ...
2020-08-05 01:09:14 588
原创 牛客网编程题——斐波那契数列
大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0,第1项是1)。n<=39# -*- coding:utf-8 -*-class Solution: def Fibonacci(self, n): # write code here if n == 0: return 0 elif n == 1: return 1 f1 = 0
2020-08-05 00:33:37 237
原创 牛客网编程题——二维双向递增数组找目标值
# -*- coding:utf-8 -*-class Solution: # array 二维列表 def Find(self, target, array): # write code here rows = len(array) cols = len(array[0]) startx = rows - 1 starty = 0 while startx >= 0 and start.
2020-08-05 00:21:53 151
原创 牛客网编程题——成绩排序(堆排序)
本题最大的难点不是题目本身而是如何处理牛客网的多组流数据输入输出from heapq import * while True: try: n = int(input()) direction = int(input()) heap = [] score_dict = {} for _ in range(n): l = input().split(' ') this_.
2020-08-05 00:16:28 384
原创 牛客网编程题——牛牛的数列(至多调整一个得到的最长上升子区间)
先找到所有上升区间的起始位置索引存为[(start1,end1),(start2,end2),…]然后从上面第二个区间开始 依次探讨和其前一个区间合并的可能性假设原数组为l合并的条件是start2 = end1 + 1 and l[end1] > l[start2] and l[end1] < l[start2+1]或start2 = end1 + 1 and l[end1] > l[start2] and l[end1-1] < l[start2]当满足上述条件.
2020-08-04 23:13:29 378
原创 牛客网编程题——最长公共连续子串
二阶DPDP[i][j]的意义是s1和s2之间以s1[i]和s2[j]位置元素为结尾的连续公共子串长度最后取DP中最大的数即可s1 = input()s2 = input()m = len(s1)n = len(s2)dp = []for _ in range(m): dp.append([0 for _ in range(n)])maxa = 0#先填第一行for i in range(n): if s1[0] != s2[i]: continue.
2020-08-04 01:07:17 274
原创 牛客网编程题——操作序列
从原数组的末尾往前2个2个跳 然后再跳向末尾 同样是2个2个跳n = int(input())l = input().split(' ')resstr = ''index = n - 1if n % 2 == 0: while index >= 1: resstr += l[index] resstr += ' ' index -= 2 index = 0 while index < n - 1: .
2020-08-04 00:25:02 168
原创 牛客网编程题——组装三角形
按照两数之和的思想解n = int(input())l = [int(val) for val in input().split(' ')]l = sorted(l)nums = 0for i in range(n-2): for j in range(i+1,n-1): pre_sum = l[i] + l [j] for k in range(j+1,n): if pre_sum > l[k]: .
2020-08-03 23:59:09 926
原创 牛客网编程题——循环单词
判断循环字符串的简单方法如果a和b是互为循环字符串则a in b+bn = int(input())res = []for _ in range(n): res.append(input())all_word = set()suma = 0def check(old,this): if old in this+this and len(old)==len(this): return True else: return Falsefo.
2020-08-03 23:49:43 212
原创 两两配对差值最小 拼多多[编程题](python AC解)
n = int(input())l = [int(val) for val in input().split(' ')]l = sorted(l)mina = Nonemaxa = Nonefor i in range(n//2): tempres = l[i] + l[-(i+1)] mina = tempres if mina == None else min(mina,tempres) maxa = tempres if maxa == None else max..
2020-08-02 18:38:21 458
原创 选靓号 拼多多[编程题](python 95%解)
95%通过率l1 = input().split(' ')original_str = input()strl2 = list(original_str)l2 = [int(val) for val in strl2]n,k = int(l1[0]),int(l1[1])#一共n位#需要有k个相同all_val = []diff = 0for each in l2: if each not in all_val: all_val.append(each) ..
2020-08-02 18:12:17 375
原创 骰子期望 拼多多[编程题](python AC解)
思路都写在注释里了n = int(input())x = input().split(' ')res = []maxlen = 0for each in x: this_x = int(each) maxlen = max(maxlen,this_x) tempres = [(1/this_x) for _ in range(this_x)] res.append(tempres)for i in range(len(res)): while len(r.
2020-08-02 11:02:51 659
原创 多多的排列函数 拼多多[编程题]
找规律求最小值 只需要从大到小排列(从1开始 最小值的规律是1 1 0 0 1 1 0 0 … )求最大值 只需要将最大的N放在最后一个 前面N-1个 是 MID,MID+1,…,N-1,MID-1,… 1即可从1开始 最大值规律是 i i-1 i-1 i i i-1 i-1 …找规律即可得 得到如下代码n = int(input())for _ in range(n): N = int(input()) if N%2==0: minres = 0 if (N..
2020-08-01 10:25:55 451
原创 多多的魔术盒子 拼多多[编程题]
多多鸡有N个魔术盒子(编号1~N),其中编号为i的盒子里有i个球。多多鸡让皮皮虾每次选择一个数字X(1 <= X <= N),多多鸡就会把球数量大于等于X个的盒子里的球减少X个。通过观察,皮皮虾已经掌握了其中的奥秘,并且发现只要通过一定的操作顺序,可以用最少的次数将所有盒子里的球变没。那么请问聪明的你,是否已经知道了应该如何操作呢?输入描述:第一行,有1个整数T,表示测试用例的组数。(1 <= T <= 100)接下来T行,每行1个整数N,表示有N个魔术盒子。(1 &
2020-08-01 09:35:28 1921
原创 [编程题]牛妹打怪兽(牛客网编程题)的动态规划AC解
链接:https://www.nowcoder.com/questionTerminal/5c5fa5bf2a9942fcb1a3844d715087b9来源:牛客网众所周知,牛妹非常喜欢打游戏,在阳光明媚的一天,她在玩一个叫做打怪兽的游戏。也许您已经知道游戏“打怪物”。如果您不知道,没关系,让我现在告诉您,森林里有那么多怪物,您就是攻击怪物并保护村庄的英雄。为了简化问题,我们把怪物排成一行,怪物身上有很多攻击点,你有一把剑,只能切掉攻击点,当切掉一个攻击点时,怪物会分裂成两个在段中,您必须消耗与怪
2020-08-01 09:13:59 1057
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人