目录

数据库知识点整理:

leetcode每日一题:

难题积累:


数据库知识点整理:

        3.4 : 数据查询.

                模板: 

select -- {基本表中存在的列明 , 且存在下层调用的表格}
from -- {引用的表格}
where -- {设置选择的条件}
group by -- {以 列名 来分类 , 同一个常量只能出现一次}
have -- {对分类后的设置选择的条件}
order by -- {排序 , asc | desc}

       子函数 :

                cast ( num  as int ) : 取整 ( cast ( price * 0.8 as int ) .

                distinct col : 删除 col 重复常量 ( select distinct book_no ) .

                top n col : 输出列表中前 n 行 ( select top 3 *  ) .

比较运算符 : = , > , < , >= 或 !< , <= 或 !> , != 或 <> , not .

between a and b : 在 a 和 b 之间 ( 类 -> a <= x <= b ) .

in : 处于集合中 .

                like : 字符串匹配 ( like '  ' ) .

                % : 之后可以跟任意个 任意的字符 . 

                _ : 之后可以跟一个 任意的字符 .

                and : 连接两个条件 , 表示且 ( a = 'a' and b = 'b' ) .

                or : 连接两个条件 , 表示并 (a = 'a' and b = 'b' ) . 

                count : 统计该列 常量 的个数 . 

                distinct : 去除重复的常量 .

                sum : 常量的总和 . 

        (sum 和 count 的区别) : 假设 col 列存在 : 1 , 2 , 3 , 4. 那么count -> 4 , 而sum -> 10 . 

                avg : 计算平均值 ( sum对应的平均值 . 

       3.4.1 : 单表查询.

                快速的将表中所有属性列都选出来的方法: select * .

                select 子句中可以是表中的属性列 , 也可以是表达式 (price * 0.8 .

                select book_name 书名 ( 给book_name列命名 .

                确定集合 where col in ('  ') .

                匹配串模板:

  实例                        效果like '王%' -- -> 搜索以'王'开头的所有字符串 (王啊三 , 王五 .like '%三' -- -> 搜索以'三'结尾的所有字符串 (这是三 , 王三 .like '%三%' -- -> 搜索含有'三'这个字符的所有字符串 .like '_三' -- -> 搜索只含有2个字符 , 且第二个字符为'三' 的字符串like '[张,王]%' -- -> 分配like '[^ 张,王]%' 00 -> ^表示非

                空间查询为 -> is null , 而不是 = null .

leetcode每日一题:

次元门

一道脑筋急转弯 , 实际上只有三种交叉的图像.

class Solution {
public:bool isSelfCrossing(vector<int>& distance) {int n = distance.size();if(n < 4) return false;for(int i = 0;i < n;i ++){if(i + 3 < n && distance[i + 2] <= distance[i] && distance[i + 3] >= distance[i + 1]) return true;if(i + 4 < n && distance[i] + distance[i + 4] >= distance[i + 2] && distance[i + 1] == distance[i + 3]) return true;if(i + 5 < n && distance[i + 2] >= distance[i + 4] && distance[i + 3] > distance[i + 1] && distance[i] + distance[i + 4] >= distance[i + 2] && distance[i + 5] + distance[i + 1] >= distance[i + 3]) return true; }return false;}
};

难题积累:

次元门

解法1: bfs 

(\\v\\) 自己的错误代码.

class Solution {
public:bool canCross(vector<int>& stones) {int n = stones.size();bitset<2005>bit;unordered_map<int , int>ma;for(int i = 0;i < n;i ++) ma[stones[i]] = i;queue<pair<int , int>>que;if(ma.count(stones[0] + 1)) que.push({stones[0] + 1 , 1}) , bit[ma[stones[0] + 1]] = 1;while(!que.empty()){// auto [ide , val] = que.front();int ide = que.front().first , val = que.front().second;que.pop();if(ide == stones[n - 1]) return true;for(int i = -1;i <= 1;i ++){if(ide + val + i == stones[n - 1]) return true;if(!bit[ma[ide + val + i]] && ma.count(ide + val + i) && ide + val + i > ide) que.push({ide + val + i , val + i}) , bit[ma[ide + val + i]] = 1;}}return false;}
};

题解:

class Solution {
public:bool canCross(vector<int>& stones) {if (stones[0] + 1 != stones[1]) { // 第一步只能从第一块石头跳一步,所以如果不成立直接返回falsereturn false;}int n = stones.size();unordered_set<int> stoneSet; // 记录哪些单元格有石头,方便查找unordered_map<int, unordered_set<int>> visited; // 记录同一块石头跳i步的情况是否遍历过,用于剪枝for (int i = 0; i < n; i++) {stoneSet.insert(stones[i]);visited[stones[i]].insert(0);}queue<pair<int, int>> q;q.emplace(stones[1], 1);visited[0].insert(1);while (!q.empty()) {int curStone = q.front().first; // 当前所在石头int curStep = q.front().second; // 上一次跳的步数kq.pop();for (int i = 0; i < 3; i++) { // 遍历k - 1、k、k + 1三种情况int nextStone = curStone + curStep - 1 + i;if (nextStone == stones[n - 1]) {  // 目标石头等于最后一块石头return true;}if (curStep - 1 + i > 0) {if (nextStone < stones[n - 1] && // 目标石头必须小于最后一块石头,因为不能回头stoneSet.count(nextStone) && // 目标石头必须存在visited[nextStone].count(curStep - 1 + i) == 0) { // 用k - 1 + i步跳到目标石头的情况没有遍历过q.emplace(nextStone, curStep - 1 + i);visited[nextStone].insert(curStep - 1 + i);}}}}return false;}
};

题解出处: growl-2

解法2: dp 动态规划

不想多说 , wa 了 n 次.

        二维dp: 第一维 表示当前所在的下标. 第二维 表示在当前下标位置的石头的 val 值.

        逆向思维: 当你可以走到下标 ide 时 , 那么两个石头之间(stones[ide] 和 stones[before]) 一定要有这个关系: 在下标为before的石头 的val 值 (stones[ide] - stones[before] , stones[ide] - stones[before] + 1 , stones[ide] - stones[before] - 1.) 其中一个存在.

        所以状态转移方程为: dp[i][val] = dp[j][val] || dp[j][val - 1] || dp[j][val + 1] || dp[i][val];

class Solution {
public:bool canCross(vector<int>& stones) {int n = stones.size();vector<vector<bool>>dp(n + 1 , vector<bool>(n + 1 , false));if(stones[0] + 1 != stones[1]) return false;dp[0][0] = true;for(int i = 1;i < n;i ++){for(int j = i - 1;j >= 0;j --){int val = stones[i] - stones[j]; //两个石头之间的差值.if(val > i) break;dp[i][val] = dp[j][val] || dp[j][val - 1] || dp[j][val + 1] || dp[i][val];}}for(int i = 1;i < n;i ++) if(dp[n - 1][i]) return true;return false;}
};

繁花落尽 心中仍有花落的声音 一朵一朵在无人的山间轻轻飘过.Day Seven -- 画船听雨眠.

“21 天好习惯”第一期-7相关推荐

  1. “21天好习惯“第一期--4

    "21天好习惯"-第四天 每天记录一点点 计算机的诞生与发展 冯·诺依曼体系 计算机系统作为一个能够自动地处理信息的智能化工具,必须解决好两个最基本的问题:①信息如何表示才能方便地 ...

  2. “21天好习惯” 第一期 - 18

    今天进一步探究昨天学习的strcmp()函数:         昨天学习strcmp()函数时提到了,当两个字符串相同时,输出0,不相同时,输出非零,那么当两个字符串不同时,具体会输出什么非零值呢?于 ...

  3. “21天好习惯”第一期——16

    <计算机组成原理> 第一章 概论 1.1.2 存储程序工作方式 存储程序是计算机的核心内容,表明了计算机的工作方式,包含3个要点:事先编写程序,存储程序,自动.连续地执行程序. (1)根据 ...

  4. “21天好习惯”第一期- 4 简单的壁纸爬虫

    有时候我们不想让电脑桌面过于单调,于是琢磨着能不能让电脑每天自动获取网站上的图片然后更换为壁纸,这就需要一个壁纸爬虫了,这里以3G壁纸为例. 首先,还是喜闻乐见的导入模块,在这个爬虫中,我们需要以下模 ...

  5. “21天好习惯”第一期——21

    <计算机组成原理> 3.5.2 MIPS32架构CPU基本的组成部件 3. 单周期控制系统设计 (2)ALU控制单元      ALU控制单元接收两种输入:主控单元输出的m位aluop和指 ...

  6. “21天好习惯“第一期——2

    道友们好,今天是学习的第二天,经过一天的学习我又了解到了很多有关C语言的知识,我也会和大家继续分享我的学习笔记,以及在学习中遇到的问题. 请大家看看下面这个程序: 今天的学习就到此为止,希望大家可以向 ...

  7. “21天好习惯”第一期——2

    今天学习的内容是3.3.2--算术逻辑单元. 继续昨天的学习的内容进一步学习了ALU: ALU的外部特性与功能: ALU的标志位: ALU的EDA设计模式: 学习中遇到的问题主要是ALU的EDA设计模 ...

  8. “21天好习惯”第一期-第10天

    今天学会了一个猜数的程序,这个程序可以让计算机随机生成一个100以内的数,然后我们人来猜这个数是什么. #include<stdio.h> #include<stdlib.h> ...

  9. “21天好习惯“ 第九期—9:京东倒计时,淘宝倒计时

    "21天好习惯" 第九期 - 9 一.学习规划 1.计算机组成图谱绘画(应为知识导图)(10月25) 2.网络工程师备考(11月6) 3.信息知识竞赛(10月31) 二.所遇问题 ...

  10. “21天养成好习惯”第一期——21

    1.今天是关于数组 概念在上图里面同时还有诸多注意事项 1.数组的下标均以0开始: 2.数组在初始化的时候,数组内元素的个数不能大于声明的数组长度: 3.如果采用第一种初始化方式,元素个数小于数组的长 ...

最新文章

  1. 使用JDK工具生成SSL证书(网站https访问)
  2. iOS UI-UIScrollView控件实现图片缩放功能
  3. LeetCode 1181. 前后拼接(哈希map)
  4. 如何看待阿里巴巴推荐的Python400集视频?零基础入门学习Python
  5. Android逆向笔记-单机游戏通过配置文件修改技能等
  6. Ext4.1 Grid 分页查询
  7. linux+分离线程+退出,Linux下线程终止操作.pdf
  8. bat命令打开指定网页进入全屏
  9. Linux x86-64 IOMMU详解(三)——Intel IOMMU(硬件IOMMU)的功能与基本原理
  10. linux启动报错23修复
  11. linux系统下CPU利用率的计算
  12. 分享200个App移动端模板---总有一个适合你
  13. arccatalog点要素显示不完_改变人际关系核心要素,不讨好不献媚,牢记这3点,受益一生...
  14. 网络管理员考试试题讲解
  15. 北大软微计算机动画,【新增】2019年北京大学软微学院【电影方向】考研653、905参考书真...
  16. postgreSql版的occurs函数
  17. ios禁止屏幕旋转的几种方法
  18. 关于牛顿-欧拉法的外推和内推的理解
  19. SDN学习路径——SDN架构
  20. Vue自定义组件npm上传私服,且从私服下载使用

热门文章

  1. 粉笔网页端资料分析仿ipad分屏插件开发完成总结
  2. 【转】如何检测wifi信号强度? -- 不错
  3. axis的xml转java的实际开发使用笔记
  4. UI设计APP金刚区,卡片式设计
  5. Aria2 ,下载神器
  6. 挂载 机械硬盘_如何在mac苹果系统下使用移动硬盘
  7. txt文件字符在计算机,(35)在C盘当前文件夹下有一个已经建立好的顺序文件Alph.txt,文件内容为只含有字母的一个字符去、...
  8. 2020/2/23如何高效使用Axure绘制原型图
  9. 傻子也能看懂的迪杰斯特拉算法(转)
  10. java outer什么意思_java里面outer、 inner是什么意思