08 2020 档案

摘要:有 3n 堆数目不一的硬币,你和你的朋友们打算按以下方式分硬币: 每一轮中,你将会选出 任意 3 堆硬币(不一定连续)。Alice 将会取走硬币数量最多的那一堆。你将会取走硬币数量第二多的那一堆。Bob 将会取走最后一堆。重复这个过程,直到没有更多硬币。给你一个整数数组 piles ,其中 pile 阅读全文
posted @ 2020-08-25 01:23 nilbook 阅读(301) 评论(0) 推荐(0)
摘要:给你一个 有向无环图 , n 个节点编号为 0 到 n-1 ,以及一个边数组 edges ,其中 edges[i] = [fromi, toi] 表示一条从点 fromi 到点 toi 的有向边。 找到最小的点集使得从这些点出发能到达图中所有点。题目保证解存在且唯一。 你可以以任意顺序返回这些节点编 阅读全文
posted @ 2020-08-24 12:08 nilbook 阅读(267) 评论(0) 推荐(0)
摘要:1 /* 2 整体思路: 3 枚举所有四位数,并将所有可颠倒且颠倒后合法(不以0开头)的四位数找出来,然后 4 将其与原本数字做差,将<原数,颠倒数,差>作为一个price结构体数据类型存入两个动态数组vector 5 然后遍历两个vector,双层for循环求和,用两个的vector的diff加起 阅读全文
posted @ 2020-08-23 21:24 nilbook 阅读(272) 评论(0) 推荐(0)
摘要:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 思路:从最后一位看,若不为9,则加1直接返回 若为9,则本位设为0,继续遍历前一个数; 若跳出for循环,则说明数组 阅读全文
posted @ 2020-08-17 01:49 nilbook 阅读(158) 评论(0) 推荐(0)
摘要:比较两个版本号 version1 和 version2。如果 version1 > version2 返回 1,如果 version1 < version2 返回 -1, 除此之外返回 0。 你可以假设版本字符串非空,并且只包含数字和 . 字符。 . 字符不代表小数点,而是用于分隔数字序列。 例如, 阅读全文
posted @ 2020-08-12 01:20 nilbook 阅读(220) 评论(0) 推荐(0)
摘要:解题思路:我们将二进制串按照字符分组,例如00111011可以分为{2,3,1,2} 我们只需看相邻的数字中,取min(u,v)即可,我们只要遍历所有相邻的数对,求它们的贡献总和,即可得到答案。 统计出个数后, 对于每个个数只关心它前面的值,所以使用last来存储前面的cnt,一次次将min加入结果 阅读全文
posted @ 2020-08-10 13:14 nilbook 阅读(93) 评论(0) 推荐(0)
摘要:1 #include <cstdio> 2 #include <iostream> 3 using namespace std; 4 int n=0;//n皇后 5 int ans=0;//解个数 6 bool hashTable[20]={false};//列是否被占有 7 bool xy[20] 阅读全文
posted @ 2020-08-09 22:30 nilbook 阅读(132) 评论(0) 推荐(0)
摘要:将相同字符统计出个数放在字符后,原地修改 解题思路:双指针做法,read和write指针 1 class Solution { 2 public int compress(char[] chars) { 3 int write=0;//写指针 4 int anchor=0;//指向连续字符的第一个 阅读全文
posted @ 2020-08-09 17:51 nilbook 阅读(105) 评论(0) 推荐(0)
摘要:蒜头君手上有一些小木棍,它们长短不一,蒜头君想用这些木棍拼出一个等边三角形,并且每根木棍都要用到。 例如,蒜头君手上有长度为 11,22,33,33 的4根木棍,他可以让长度为11,22 的木棍组成一条边,另外 22 跟分别组成 22 条边,拼成一个边长为 33 的等边三角形。蒜头君希望你提前告诉他 阅读全文
posted @ 2020-08-07 17:20 nilbook 阅读(268) 评论(0) 推荐(0)
摘要:解题思路: 1.先将表达式里的减号“-”用replaceAll全换成“+-”,可以简化减号和加号运算 2.将方程式以=分为左右两个式子后,再将两个式子以“+”号分割成两个字符串数组leftArray和rightArray来进行cal计算 3.将每个式子的x的系数和常数d的系数以cal方法计算出来, 阅读全文
posted @ 2020-08-07 02:28 nilbook 阅读(99) 评论(0) 推荐(0)
摘要:递归解法: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int 阅读全文
posted @ 2020-08-07 01:19 nilbook 阅读(81) 评论(0) 推荐(0)
摘要:利用库函数,string.split(char ch),以ch为分割符,将字符串分割后存入string数组 再利用split将i去除掉 1 class Solution { 2 public String complexNumberMultiply(String a, String b) { 3 S 阅读全文
posted @ 2020-08-06 02:06 nilbook 阅读(70) 评论(0) 推荐(0)
摘要:数学题: 让连除结果最大,则分母最小即可 而从第二个数以后全是分母,第一个数是分子,从第二个数到最后就全部括起来做分母 1 class Solution { 2 public String optimalDivision(int[] nums) { 3 if(nums.length==1) 4 re 阅读全文
posted @ 2020-08-06 01:39 nilbook 阅读(113) 评论(0) 推荐(0)
摘要:由题意知: 一、暴力法: 根结点是爷爷,根结点的左右孩子结点是两个孩子,孩子的孩子是孙子 所以比较四个孙子vs两个儿子 这两个组合谁得钱多,就当做当前结点的最大钱数, 4 个孙子投的钱加上爷爷的钱如下int method1 = root.val + rob(root.left.left) + rob 阅读全文
posted @ 2020-08-06 01:15 nilbook 阅读(131) 评论(0) 推荐(0)
摘要:解题思路: dfs深度优先搜索,用map存储地图,vis记录是否遍历,主函数里for循环寻找没有来到过的草丛,遇到了就res++且dfs此点 此题里的dfs实质是将一块草丛扩充成为一片草地,即遇到一块草地,就dfs寻找和其连续的草地后将此块vis设为1,即连成一片草地 循环到这快地时因为vis==1 阅读全文
posted @ 2020-08-05 19:40 nilbook 阅读(151) 评论(0) 推荐(0)
摘要:memset()函数原型是extern void *memset(void *buffer, int c, int count) buffer:为指针或是数组c:是赋给buffer的值count:赋值buffer中的位数 memset是以字节为单位,初始化内存块。 当初始化一个字节单位的数组时,可以 阅读全文
posted @ 2020-08-05 18:46 nilbook 阅读(905) 评论(0) 推荐(0)
摘要:深度优先搜索,简称DFS,算是应用最广泛的搜索算法,属于图算法的一种,dfs按照深度优先的方式搜索,通俗说就是“一条路走到黑”,dfs是一种穷举,实质是将所有的可行方案列举出来,不断去试探,知道找到问题的解,其过程是对每一个可能的分支路径深入到不能再深入为止,且每个顶点只能访问一次。 dfs一般借助 阅读全文
posted @ 2020-08-05 18:43 nilbook 阅读(742) 评论(0) 推荐(0)
摘要:在网络社交的过程中,通过朋友,也能认识新的朋友。在某个朋友关系图中,假定 A 和 B 是朋友,B 和 C 是朋友,那么 A 和 C 也会成为朋友。即,我们规定朋友的朋友也是朋友。 现在要求你每当有一对新的朋友认识的时候,你需要计算两人的朋友圈合并以后的大小。 解决思想: 路径压缩:只关心每个结点的父 阅读全文
posted @ 2020-08-04 20:00 nilbook 阅读(170) 评论(0) 推荐(0)
摘要:1.功能一致 都是将实际值为int类型的String类型转换成整型 Integer integer=Integer.valueOf("23"); int i=Integer.parseInt("56"); 2.区别: valueOf方法是得到的Integer包装类,而parseInt得到的是int基 阅读全文
posted @ 2020-08-04 11:57 nilbook 阅读(717) 评论(0) 推荐(0)
摘要:给定一个 24 小时制(小时:分钟)的时间列表,找出列表中任意两个时间的最小时间差并以分钟数表示。 思路: 先将String列表中的时间全部化为分钟数,然后排序,然后for循环寻找最小差值 注意:不要忘记比较末尾和首部的差值,如测试用例 class Solution { public int fin 阅读全文
posted @ 2020-08-04 11:35 nilbook 阅读(165) 评论(0) 推荐(0)