在社交媒体网站上有 n 个用户。给你一个整数数组 ages ,其中 ages[i] 是第 i 个用户的年龄。

如果下述任意一个条件为真,那么用户 x 将不会向用户 y(x != y)发送好友请求:

  • age[y] <= 0.5 * age[x] + 7
  • age[y] > age[x]
  • age[y] > 100 && age[x] < 100 否则,x 将会向 y 发送一条好友请求。

注意,如果 x 向 y 发送一条好友请求,y 不必也向 x 发送一条好友请求。另外,用户不会向自己发送好友请求。

返回在该社交媒体网站上产生的好友请求总数。

阅读全文 »

这里有n门不同的在线课程,按1n编号。给你一个数组courses,其中courses[i] = [durationi, lastDayi]表示第i门课将会持续上durationi天课,并且必须不晚于lastDayi的时候完成。

你的学期从第一天开始,且不能同时修读两门及两门以上的课程。

返回你最多可以修读的课程数目。

阅读全文 »

给你一座nxn个街区组成的城市,每个截取都包含一座立方体建筑。给你一个坐标从0开始的nxn整数矩阵grid,其中grid[r][c]表示坐落于r行c列的建筑物的高度。

城市的天际线是从远处观察城市时,所有建筑物形成的外部轮廓。从东、南、西、北四个方向观测到的天际线可能不同。

我们被允许为任意数量的建筑物的高度增加任意增量(不同的建筑物的增量可能不同)。高度为0的建筑物的高度也可以增加。然而,增加的建筑物高度不能影响从任何主要方向观察城市的得到的天际线。

不改变 从任何主要方向观测到的城市的天际线的前提下,返回建筑物可以增加的最大高度增量总和。

阅读全文 »

给你一个字符串 s ,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。

当然我们可以用库函数解决这个问题,但是如果这个问题出现在面试里,那肯定是不能用库函数的。

这里我们使用位运算解决这个大小写转换问题。

阅读全文 »

给你两个证书数组personstimes。在选举中,第i张选票是在时刻为times[i]时投给选举人persons[i]的。

对于发生在时刻t的每个查询,需要找出在t时刻中领先的候选人的编号。

t时刻投出的选票也被我们计入在我们的查询之中。在平局的情况下,最近获得选票的候选人将会获胜。

你的任务:实现ToVotedCandidate类:

  • TopVotedCandidate(int[] persons, int[] times)使用personstimes数组初始化对象。
  • int q(int t)根据前面描述的规则,返回在时刻t在选举中领先的候选人的编号。
阅读全文 »

给你一个字符串licensePlate和一个字符串数组words,请你找出并返回words中最短补全词。

补全词是一个包含licensePlate中所有字母的单词,在所有补全词中,最短的那个就是最短补全词。

  • 在匹配licensePlate中的数字或空格。
  • 不区分大小写
  • 如果某个字母在licensePlace中出现不止一次,那么该字母在补全词中的出现的次数也应当一致或者更多。

例如:licensePlate=aBc 12c, 那么他的补全词应当包含字母ab忽略大小写和两个c,可能的补全词有abccdefcaaacab以及cbca

请你找出并返回words中的最短补全词。题目数据中保证一定存在一个最短补全词。当有多个单词都符合最短补全词的匹配条件时区words最靠前的那个。

阅读全文 »

写日志收集项目的时候遇到了一个关于reflect的问题,于是有了这一篇文章。

本文主要介绍go语言中reflect的基本用法,以及在使用反射特性时遇到的一些坑。

关键词:反射

阅读全文 »