- 题意描述
- 给定一个数,判断它是不是完美的平方数
- 思路一
- 暴力破解,直接从1–INT_MAX遍历,平方,判断
- 暴力优化,遍历1—INT_MAX/2之间的数
- 思路二
- 二分的思想,取中间数,判断平方,如果相等返回true;大于返回end = mid;小于设置 start = mid+1(判断mid的平法,整数溢出的判断,long)(也可以判断num/mid 和mid之间的比较)
第393题---UTF-8 Validation
题意描述
- 给定一个数组,数组中的每一个数组都代表一个8位的二进制数,0-255之间,则按照UTF-8的规则,判断这个数组是不是一个UTF-8的字符
解题思路
- 分类,但是不要嵌套分类
- 第一位为0的情况;前两位为110的情况;前三位为1110的情况;前四位为11110的情况
- 刚开始考虑的直接,if-else套if-else,逻辑混乱。现在直接每一种情况用一个函数调用
第372题---Super Power
题目描述
- 给定两个数,一个是整数,一个是数组表示很大的整数,求第一个整数的数组的乘方模上1337的结果
思路
- a ^ b % k = a % k ^ b % k % k
第42题---Trapping Rain Water
题意描述
- 给定一个数组,数组代表高度,可以看做两个木板,向中间盛水,能盛多少水,如下图
- 给定一个数组,数组代表高度,可以看做两个木板,向中间盛水,能盛多少水,如下图
思路一
- 直接暴力的想法,找到数组中的最大值,分成左右俩边,找左右两边的最大值,计算水量,递归
思路二
- 辅助数组(两个辅助数组,记录从左到右的最大值和从右到左的最大值)
思路三
- 上面思路的从左到右的最大值可以由一个变量统计
思路四
- 两个指针,两个变量记录两边的最大值,指针移动,取两个最大值的最小值的指针,向中间移动,如果大于最大值,更新最大值;小于最大值,则统计水量
第381题---Insert Delete getRandom O(1) duplicate
- 题意描述:实现一个类,对插入,删除,和取得随机数都是O(1),可以多次存入
思路:插入为1的map,list;删除为1的list,map;随机数, 数组;
- 插入的过程:在map中判断是否存在val,如果存在(find),false;不存在,在map和vector中插入数字
- 删除的过程:在map中判断是否存在val,如果不存在(find), false;存在,交换元素在vector中位置,删除map和vector中位置
- 取得随机数:直接返回rand % 范围的vector中位置的数