力扣题目类型之回溯法(一)
回溯法也可以叫做回溯搜索法,它是一种搜索的方式。
回溯是递归的副产品,只要有递归就会有回溯。
给你一座nxn个街区组成的城市,每个截取都包含一座立方体建筑。给你一个坐标从0开始的nxn整数矩阵grid,其中grid[r][c]表示坐落于r行c列的建筑物的高度。
城市的天际线是从远处观察城市时,所有建筑物形成的外部轮廓。从东、南、西、北四个方向观测到的天际线可能不同。
我们被允许为任意数量的建筑物的高度增加任意增量(不同的建筑物的增量可能不同)。高度为0的建筑物的高度也可以增加。然而,增加的建筑物高度不能影响从任何主要方向观察城市的得到的天际线。
在 不改变 从任何主要方向观测到的城市的天际线的前提下,返回建筑物可以增加的最大高度增量总和。
给你一个字符串 s
,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。
当然我们可以用库函数解决这个问题,但是如果这个问题出现在面试里,那肯定是不能用库函数的。
这里我们使用位运算解决这个大小写转换问题。
给你两个证书数组persons和times。在选举中,第i张选票是在时刻为times[i]时投给选举人persons[i]的。
对于发生在时刻t的每个查询,需要找出在t时刻中领先的候选人的编号。
在t时刻投出的选票也被我们计入在我们的查询之中。在平局的情况下,最近获得选票的候选人将会获胜。
你的任务:实现ToVotedCandidate类:
TopVotedCandidate(int[] persons, int[] times)使用persons和times数组初始化对象。int q(int t)根据前面描述的规则,返回在时刻t在选举中领先的候选人的编号。给你一个字符串licensePlate和一个字符串数组words,请你找出并返回words中最短补全词。
补全词是一个包含licensePlate中所有字母的单词,在所有补全词中,最短的那个就是最短补全词。
licensePlate中的数字或空格。licensePlace中出现不止一次,那么该字母在补全词中的出现的次数也应当一致或者更多。例如:licensePlate=aBc 12c,
那么他的补全词应当包含字母a、b忽略大小写和两个c,可能的补全词有abccdef、caaacab以及cbca。
请你找出并返回words中的最短补全词。题目数据中保证一定存在一个最短补全词。当有多个单词都符合最短补全词的匹配条件时区words中最靠前的那个。