10.8lc
今天复习了MySQL的基础架构 ,并总结了文章:MySQL学习笔记
今天依旧是 每日抑题。。。。 看了两道剑指 offer的题:
187. 重复的DNA序列 - 力扣(LeetCode) (leetcode-cn.com)
ps:题目机器翻译属实 迷人。。。。
意思就是:找到一个字符串里面 是数量为10且且重复出现的 子字符串
class Solution {
static final int l =10;
public List<String> findRepeatedDnaSequences(String s) {
Map<String,Integer> map =new HashMap<String,Integer>();
List<String> res =new ArrayList<String>();
int n =s.length();
// n-l 目的是 保证substring 切割字符串的时候 不溢出
for(int i=0;i<=n-l;i++){
String son=s.substring(i,i+l);
map.put(son,map.getOrDefault(son,0)+1);
if(map.get(son) ==2){
res.add(son);
}
}
return res;
}
}
剑指 Offer 11. 旋转数组的最小数字 - 力扣(LeetCode) (leetcode-cn.com)
应该是刷过的题: 忘了…
还是 我最爱的 玄学二分~~ :
这里就涉及到了 二分的 区间性问题: 原本数组的元素满足 有序性。无论怎么翻转 在一定的区间上还是 有序的 利用这个特性 来找到 最小值
class Solution {
public int minArray(int[] numbers) {
int l=0,r=numbers.length-1;
while(l<r){
int mid=l+(r-l)/2;
if(numbers[mid] <numbers[r]){
r=mid;
}else if(numbers[mid] >numbers[r]){
l=mid+1;
}else{
r-=1;
}
}
return numbers[l];
}
}
剑指 Offer 04. 二维数组中的查找 - 力扣(LeetCode) (leetcode-cn.com)
:经典题: 二维数组找目标:
关键点:找到一个位置满足 一边大,一边小的特点来解决:比如 左下 右上这两个地方
class Solution {
public boolean findNumberIn2DArray(int[][] matrix, int target) {
int row=matrix.length-1;
int col=0;
if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
return false;
}
while(col<matrix[0].length && row >=0){
if(matrix[row][col] == target){
return true;
}else if(matrix[row][col] > target){
row--;
}else{
col++;
}
}
return false;
}
}