day39.动态规划+MySQL数据库复习

[复制链接]
发表于 2026-2-2 21:44:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
一.动态规划:

198.打家劫舍

   你是一个专业的小偷,筹划偷窃沿街的房屋。每间房内都藏有肯定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗体系,假如两间相邻的房屋在同一晚上被小偷突入,体系会自动报警。
  给定一个代表每个房屋存放金额的非负整数数组,盘算你 不触动警报装置的情况下 ,一夜之内可以大概偷窃到的最高金额。
   思绪: 假如只有一家 那直接就偷 ; 起首初始化数组,dp的寄义是思量下标i(包罗i)以内的房屋,最多可以偷窃的金额为dp。以是dp[1]=nums0 和 1取最大值 然后从2开始遍历 递推公式就是 看你偷照旧不偷  dp[i-1]就是不偷 取上一个最优值 dp[i-2]+nums 很显着就是偷了 nums是当前值 dp[i-2]是 从0到i-2的总资金 看谁的更大一些 就取谁的
  1. class Solution {
  2. public:
  3.     int rob(vector<int>& nums) {
  4.         if (nums.size() == 0) return 0;
  5.         if (nums.size() == 1) return nums[0];
  6.         vector<int> dp(nums.size());
  7.         dp[0]=nums[0];
  8.         dp[1]=max(nums[0],nums[1]);//dp[i]
  9.         for(int i=2;i<nums.size();i++){
  10.             dp[i]=max(dp[i-2]+nums[i],dp[i-1]);
  11.         }
  12.         
  13.         return dp[nums.size()-1];
  14.     }
  15. };
复制代码
213.打家劫舍II

   你是一个专业的小偷,筹划偷窃沿街的房屋,每间房内都藏有肯定的现金。这个地方全部的房屋都 围成一圈 ,这意味着第一个房屋和末了一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗体系,假如两间相邻的房屋在同一晚上被小偷突入,体系会自动报警 。
  给定一个代表每个房屋存放金额的非负整数数组,盘算你 在不触动警报装置的情况下 ,今晚可以大概偷窃到的最高金额。
   思绪: 与打家劫舍1差别的是,房屋形成了环,成环的话 有如下三种情况:
1.不包罗首尾元素

2.不包罗首元素

3.不包罗尾元素

 以是必要将这三种情况思量进去,综合判断哪种情况的资金是最多的。
  1. class Solution {
  2. public:
  3.     int rob(vector<int>& nums) {
  4.         if (nums.size() == 0) return 0;
  5.         if (nums.size() == 1) return nums[0];
  6.         int result1 = robRange(nums, 0, nums.size() - 2); // 情况二
  7.         // 不考虑尾部
  8.         int result2 = robRange(nums, 1, nums.size() - 1); // 情况三
  9.         //不考虑 首部
  10.         return max(result1, result2);
  11.     }
  12.     int robRange(vector<int>& nums, int start, int end){
  13.         if(end==start)
  14.         return nums[start];
  15.         vector<int> dp(nums.size());
  16.         //之后就是打家劫舍2的思路了
  17.         dp[start]=nums[start];
  18.         dp[start+1]=max(nums[start],nums[start+1]);
  19.         for(int i=start+2;i<=end;i++){
  20.             dp[i]=max(dp[i-2]+nums[i],dp[i-1]);
  21.         }
  22.         return dp[end];
  23.     }
  24. };
复制代码
 

二.MySQL数据库复习

1683.无效的推文

   查询全部无效推文的编号(ID)。当推文内容中的字符数严酷大于 15 时,该推文是无效的。
  以恣意序次返回结果表。
   对于SQL表,用于盘算字符串中字符数的最佳函数是 CHAR_LENGTH(str),它返回字符串 str 的长度。
  1. select tweet_id
  2. from tweets
  3. where CHAR_LENGTH(content)>15;
  4. #对于SQL表,用于计算字符串中字符数的
  5. #最佳函数是 CHAR_LENGTH(str),它返回字符串 str 的长度。
复制代码
1148.文章欣赏:

   请查询出全部欣赏过本身文章的作者
  结果按照 id 升序分列。
   distinct 去重  order by 排序
  1. # Write your MySQL query statement below
  2. #请查询出所有浏览过自己文章的作者
  3. #结果按照 id 升序排列。
  4. select
  5. distinct author_id as id
  6. from Views
  7. where author_id=viewer_id
  8. order by id;
复制代码
函数:


 束缚:在创建表的时间可以添加束缚


 
外键束缚:用来让两张表的数据之间创建毗连 从而包管数据的同等性和完备性。

删除
        由下图可见,假如两个表没有主从关系,没有外键束缚的话,当撤消业务线1研发部时,此时身处部门的员工仍会残留在数据库中,如许就失去了数据的完备性和同等性,以是要添加外键,当添加完外键之后,就不可以直接删撤除研发部 这个内容了 ,由于外键仍旧存在,以是无法删除

 

 2.多表查询
1.内毗连
inner 
2.外毗连

 左外链接查询:     左外毗连 完全包罗左表的值 包罗空
1378.使用唯一的标识码更换员工leetcode标题

  1. select EmployeeUNI.unique_id,Employees.name
  2. from Employees
  3. LEFT JOIN EmployeeUNI
  4. ON Employees.id=EmployeeUNI.id;
复制代码

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表