1, drop delete truncate
drop 删除表结构以及内容,释放表所占空间
delete 执行一次操作从表中删除一行数据,删除操作记录在事务日志中,后期可以回滚操作
truncate 一次性删除所有数据,其操作不被记录,数据不可恢复
2, 私有ip地址
A类私有ip地址:10.0.0.0 —10.255.255.255
B类私有ip地址:172.16.0.0 — 172.31.255.255
C类私有ip地址: 192.168.0.0 — 192.168.255.255
3, 查看Linux系统版本
uname -a 显示系统名、节点名称、操作系统的发行版号、操作系统版本、运行系统的机器 ID 号。
uname -r 显示当前系统发行版号
编程题:
1)给定股票价格数组,允许一次交易(先买进,再卖出),求最大利润
例如 :输入【7,1,5,3,6,4】 输出 5; 【7,6,4,3,1】 输出 0 (不参与交易)
思路:两个变量一个记录当前最小股票价格,一个记录当前最大股票利润
def maxProfit(arr):
minIndex = 0
maxPro = 0
i = 1
while i < len(arr):
curProfit = arr[i] - arr[minIndex]
if maxPro < curProfit:
maxPro = curProfit
if arr[i] < arr[minIndex]:
minIndex = i
i += 1
return maxPro
2) 给定股票价格数组,不限制交易次数,求最大利润
例如:输入【7,1,5,3,6,4】 输出 8
分析:序列情况分三种
a>b>c 这种情况下不进行交易,利润为0
a
ac 这种情况下最大利润为b-a
总结:最大利润由相邻元素的差值累加
def maxProfit(arr):
maxPro = 0
for i in range(len(arr)-1):
if arr[i] < arr[i+1]:
maxPro += arr[i+1]-arr[i]
return maxPro
或者
def maxProfit(arr):
length = len(arr)
valley = arr[0]
maxPro = 0
if length < 2:
return maxPro
for i in range(1, length):
if valley > arr[i]:
valley = arr[i]
elif arr[i] > valley:
maxPro += arr[i]-valley
valley = arr[i]
return maxPro
3) 给定股票价格数组,不限制交易次数,但每次交易有手续费用fee,求最大利润
例如 输入:prices = [1, 3, 2, 8, 4, 9], fee = 2 输出 8
valley = arr[i]-fee的原因说明:
假设交易1为 B - A -fee,下一次交易为D - B -fee,如果说一次交易的利润小于两次交易的话才会进行两次交易,则需要满足 [D - A -fee] < [(B-A-fee)+(D-C-fee)],化简后可知B - fee > C,即下一次交易的买进额度要小于上一次的卖出额度减去fee
def maxProfit(arr, fee):
length = len(arr)
valley = arr[0]
maxPro = 0
if length < 2:
return maxPro
for i in range(1, length):
if valley > arr[i]:
valley = arr[i]
elif arr[i]-valley > fee:
maxPro += arr[i]-valley-fee
valley = arr[i]-fee
return maxPro
4)Python LeetCode(463.岛屿的周长)
给定一个包含 0 和 1 的二维网格地图,其中 1 表示陆地 0 表示水域。网格中的格子水平和垂直方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰好有一个岛屿(或者说,一个或多个表示陆地的格子相连组成的岛屿)。岛屿中没有“湖”(“湖” 指水域在岛屿内部且不和岛屿周围的水相连)。格子是边长为 1 的正方形。网格为长方形,且宽度和高度均不超过 100 。计算这个岛屿的周长。
例如:输入
[[0,1,0,0],
[1,1,1,0],
[0,1,0,0],
[1,1,0,0]]
输出: 16
思路1:遍历二维数组,如当前节点等于1,则查看它上下左右节点是否等于0或者不存在,若满足则周长加1
思路2:直接遍历二维数组,当前元素为1时,结果加4,判断该元素的上方和左方有无相邻元素,若有则减去相邻的两边,即减2,最后返回结果即可
def landPerimeter(grid):
if not grid:
return 0
result = 0
for i in range(len(grid)):
for j in range(len(grid[0])):
if grid[i][j] == 1:
result += 4
if i > 0 and grid[i - 1][j] == 1:
result -= 2
if j > 0 and grid[i][j - 1] == 1:
result -= 2
return result