- 题意描述:实现一个类,对插入,删除,和取得随机数都是O(1)
思路:插入为1的map,list;删除为1的list,map;随机数, 数组;
- 插入的过程:在map中判断是否存在val,如果存在(find),false;不存在,在map和vector中插入数字
- 删除的过程:在map中判断是否存在val,如果不存在(find), false;存在,交换元素在vector中位置,删除map和vector中位置
- 取得随机数:直接返回rand % 范围的vector中位置的数
第378题---Kth Samllest element in a sorted matrix
题意描述
- 给定一个n*n的矩阵,行和列都是递增的,在这个数组找到第k个最小的元素
思路:
- 最大值为a[0][0],最大值为a[n-1][n-1];则元素必定在这两个值之间,然后读两个值的中间值,遍历行判断比这个值小的个数,如果个数<k,则low=mid+1;否则high = mid;
第392题---Is Subsequence
题意描述
- 判断一个字符串s是否是另外一个字符串t的子序列,子序列的意思是s的字符顺序在t中是一样的
思路
- 两个指针分别指向两个字符的开头,如果两者相同,两个指针同时向后移动;如果不同,只有字符串t的指针向后移动;如果其中一个指针指向了字符的结尾,则结束;判断s的指针是否到了字符串的结尾,如果到了结尾返回true;否则返回false
第368题---largest divisible subset
- 题意描述
- 给定一个不同的整数的数组,求他最长的可除的数组的长度(数组中的每两个数是可除的)
- 思路
- 动态规划(懵逼了。)
第386题---Lexicographical Numbers
题意描述
- 给定一个数,求这个数的字典数
思路
- 从1开始,1加入到数组,判断1的10倍是否在n内,如果在,递归;判断1是否在n内,并且n%10 < 9,则递归1+1