4.11 生成子集问题
生成子集问题——迭代问题描述给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。 示例 1: 12输入:nums = [1,2,2]输出:[[],[1],[1,2],[1,2,2],[2],[2,2]] 问题分析策略选择 算法思想:迭代求解 算法设计 迭代思想,减治思想。每次选择一个元素,参与构建子集。 首先对元素去重。记录重复元素的个数。如果多个重复元素分散在其他数组中没有意义。所有多个重复元素在一起的情况下组合到之前的解集中。 这也算是一种动态规划的思想?每次都利用之前构建好的集合。构成新的解集集合。 算法分析 时间复杂度:$O(n×2^n)$ 空间复杂度:$O(n)$.结果一般不算在空间复杂度当中。 算法实现1234567891011121314151617181920212223242526272829class Solution {public: vector<vector<int>> subsetsWithDup...
4.8 最近对问题
最近对问题1 最近对问题 暴力求解问题描述 给定平面上n个点。找其中的一对点。使得在n个点组成的所有点对中,该点对之间的距离最小。 问题分析 找出一个包含n个点的集合中距离最近的两个点。 题直观的解决方法便是Brute Force(暴力求解)。时间复杂度为O(n^2) 选择策略 分别计算每一点对之间的距离,然后从中找出距离最小的那一对。为了避免同一点对计算两次,可以只考虑i<j的点对(Pi, Pj) 算法设计 算法 bruteForceClosesPoints(P) 12345678910//蛮力法求解平面中距离最近的两点//输入:一个n(n≥2)个点的列表P,P1=(x1, y1),…,Pn=(xn, yn)//输出:两个最近点的下标dmin←∞for i←0 to n-2 do for j←i+1 to n-1 do d←(xi-xj)2+(yi-yj)2 if d<dmin dmin←d; index1←i; index2←j;return index1,index2 正确性证明算法分析$O(n^2)$ 程序设计2 最近对问题...
4.9 整数划分问题
整数划分问题描述将给定正整数n表示成一系列正整数之和n=n1+n2+…+nk,其中n1≥n2≥…≥nk≥1,k≥1。求最大加数不大于m的划分个数p(n,m)。 算法设计 算法实现12345678910111213#include<iostream>using namespace std;int q(int n,int m){ if((n<1)||(m<1)) return 0; if((n == 1)||(m == 1)) return 1; if(n < m) return q(n,n); if(n == m) return q(n,m-1)+1; return q(n,m-1)+q(n-m,m);
1 创建数据库
系列一 数据库数据表的创建等基本操作123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899#注释内容(与python很像)-- 也为注释内容-- 创建一个数据库CREATE DATABASE IF NOT EXISTS maizi DEFAULT CHARACTER SET 'utf8';USE maizi;SET NAMES GBK;--创建数据表(user)--编号id--用户名usename--性别sex--邮箱email--地址addr--生日birth--薪水salary--电话tel--是否结婚married--当需要中文的时候,需要临时转换客户端的编码方式--SET NAMES GBK;--字段注释,通过comment注释内容给...
10 正则表查询
系列十 子查询 &正则表达式查询 &运算符的使用 子查询 正则表达式查询 运算符的使用 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889#第四十二课时--子查询的使用--就是用查询的语句代替条件查询的一部分,查询嵌套--由[not] in 引发的子集合查询SELECT id FROM department;SELECT id ,username FROM employee WHERE depId IN(1,2,3,4)SELECT id ,username FROM employee WHERE depId IN(SELECT id FROM department);--由比较运算符引发的子查询SELECT level FROM scholarship WHERE id ...
12 索引
系列十二索引的使用和数据库的管理 索引的使用 管理数据库 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061#第五十一课时--索引的使用--索引有一列或多了组合而成,起作用是提高对表中数据的查询速度--缺点是创建和维护索引需要耗费时间--索引可以提高查询速度,减慢写入速度 --索引的分类bitree索引和hash索引--普通索引,类似书签 index = 索引名称[索引字段]--唯一索引,unique key或者主键unique key = 索引名称{索引字段}--全文索引,只支持字符串字段,只能建立在全英文的内容上FULLTEXT KEY = 索引名称 索引字段--单列索引,一个字段上的索引INDEX in_test1(test1)--多列索引,多个字段上的索引INDEX 多列索引的名称(字段1,字段2,字段3...)--空间索引,SPACIAL INDEX spa_test...
11 数学函数
系列十一函数与表达式的应用 数学函数 字符串函数 日期时间函数 条件判断函数和系统函数 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899#第四十六课时--数学函数库中的函数CEIL()--进一取整FLOOR()--舍一取整MOD()--取余数POWER()--幂运算ROUND()--四舍五入TRUNCATE()--数字截取ABS()--取绝对值PI()--圆周率RAND()--返回0~1之间的随机数SIGN()--返回x的符号EXP()--计算e的几次方#第四十七课时--字符串函数库--CHAR_LENGTH(S)返回字符串的字符数--length()返回字符串的长度--concat(s1,s2...)将字符串合并成为一个字符串--CONCAT_W...
3 完整性约束
3 系列三 完整性约束条件 主键约束 自增长 默认值和非空约束 唯一约束 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586#第十二课时测试主键长度--完整性约束条件--PRIMARY KEY 主键,不能重复,非空,无意义字段,--AUTO_IINCREMENT--FOREIGN KEY--NOT NULL--UNIQUE KEY--DEFAULT--的是主键CREATE TABLE IF NOT EXISTS USER1(id INT PRIMARY KEY,username VARCHAR(20));--查看创建表的定义SHOW CREATE TABLE user1;INSERT user1 VALUES(1,'king')INSERT user1 VALUES(2,'...
2 创建数据表
系列二 数据类型的测试123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101# 第八课时数据测试--查看表的表结构DESC tbl_name;DESCRIBE tbl_name;SHOW COLUMNS FROM tbl_name;SHOW CREATE TABLE tbl_name;--测试数据的越界处理CREATE TABLE test1(num1 TINYINT,num2 SMALLINT,num3 MEDIUMINT,NUM4 INT,NUM5 BIGINT);--向表中插入记录INSERT tbl_name VALUE|VALUES(值,...);INSERT test1 VALUES(-128,-32768,0,-2147483648,0...
4 修改表结构
系类四 数据表结构的相关操作 修改表名称 添加删除字段 修改字段和完整性约束条件 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137#第十七课时修改表名称CREATE TABLE IF NOT EXISTS user10(id SMALLINT UNSIGNED KEY AUTO_INCREMENT,username VARCHAR(20) NOT NULL UNIQUE,password CHAR(32) NOT NULL ,...













