update-alternatives –list python
显示Python代替版本信息
执行命令安装
update-alternatives –install /usr/bin/python python /usr/bin/python2.7 1 update-alternatives –install /usr/bin/python python /usr/bin/python3.5 2
查看默认版本
上述命令中我们设置 /usr/bin/python3.5 的优先级为2 所以设置3.5为默认
再次显示Python代替版本信息
切换版本
update-alternatives –config python
GitHub链接: https://github.com/lichangke/LeetCode
个人Blog: https://lichangke.github.io/
欢迎大家来一起交流学习
给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。
例如:
给定二叉树: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其层次遍历结果:
[ [3], [9,20], [15,7] ]
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
# @author:leacoder
# @des: BFS 广度优先 二叉树的层次遍历 时间复杂度 O(n)
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
if not root: return [] #输入参数校验
result = []
# deque 可参考 https://docs.python.org/3/library/collections.html#collections.deque
queue = collections.deque() #辅助队列
queue.append(root)
# visited = set(root) #用于存放是否访问过 这样可以访问图
while queue:
level_node_count = len(queue) #获取当前层级 节点个数
currentlevel_nodes = [] #用于存放当前层级所有节点
for i in range(level_node_count): #根据当前层级节点个数 循环遍历当前层级所有node
node = queue.popleft() #从左移除 节点
currentlevel_nodes.append(node.val) #存储当前节点
#由于循环之前已经获取 当前层级节点个数 ,循环按当前层级节点个数遍历并移除当前节点
#故下一层级节点直接加入 当循环结束 queue 存放的就只有下一层级所有节点
if node.left:#下一层 当前节点左子节点 不为空
queue.append(node.left) #加入 queue
if node.right:#下一层 当前节点右子节点 不为空
queue.append(node.right)
result.append(currentlevel_nodes)
return result
###DFS深度优先
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
# @author:leacoder
# @des: DFS 深度优先 二叉树的层次遍历 时间复杂度 O(n)
class Solution:
def levelOrder(self, root: TreeNode) -> List[List[int]]:
if not root: return []
self.result = []
self.dfs(root,0) #深度优先搜索,每次传入层级 便于将每层级节点存放起来
return self.result
def dfs(self,node,level):
if not node: return []
if len(self.result) < level +1: #结果按这种方式 [ [0层数据],[1层数据] ,... ,[n层数据] ] 存储
self.result.append([]) # 如果结果长度小于了层级 表明 需要新加一层级数据存放[]
self.result[level].append(node.val) #将当前节点 按层级 存放入对应结果中
self.dfs(node.left,level+1) #递归深度优先查找 level 每层加1
self.dfs(node.right,level+1) #递归深度优先查找 level 每层加1
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*@author:leacoder
*@des: BFS 广度优先 二叉树的层次遍历 时间复杂度 O(n)
*/
class Solution {
public List<List<Integer>> levelOrder(TreeNode root) {
List<List<Integer>> result = new ArrayList();
if (root == null)
return result;
Queue<TreeNode> q = new LinkedList<>();
q.add(root);
while(!q.isEmpty()){
int levelSize = q.size();
List<Integer> currentLevel = new ArrayList();
for(int i = 0; i < levelSize; i++ ){
TreeNode currentNode = q.poll(); //先进先出 从第一个元素(头部) 移除
currentLevel.add(currentNode.val);
if(currentNode.left!=null){
q.add(currentNode.left);
}
if(currentNode.right!=null){
q.add(currentNode.right);
}
}
result.add(currentLevel);
}
return result;
}
}
GitHub链接: https://github.com/lichangke/LeetCode
个人Blog: https://lichangke.github.io/
欢迎大家来一起交流学习
参见 https://www.jianshu.com/p/47d47970e821
访问Visual Studio Code官网 https://code.visualstudio.com/ 下载对应版本
sudo dpkg -i code_1.32.3-1552606978_amd64.deb
如果遇到如下问题
先运行 sudo apt-get install libnss3 如有必要 sudo apt-get -f install
如没问题
运行 sudo dpkg -i code_1.32.3-1552606978_amd64.deb 后如图
接着运行 sudo apt-get install -f
运行VSCode
##VS Code搭建Python环境 确保系统中已安装Python 可以通过如下命令查看:
python –version python3 –version
如果没有,通过命令安装
apt-get install python3.5
多版本Python切换,参见:Ubuntu下切换Python2和Python3
各版本的CentOS下载: http://man.linuxde.net/download/CentOS
各版本的Ubuntu下载: http://man.linuxde.net/download/Ubuntu
VMware Workstation Pro 下载 https://my.vmware.com/cn/web/vmware/info/slug/desktop_end_user_computing/vmware_workstation_pro/15_0
直接百度云盘 链接:https://pan.baidu.com/s/1PjofHTRgB3Zo_OELbSaXkg
提取码:k1yl
包含:虚拟机安装包(这里提供的是12版本的)、虚拟机的秘钥、CentOS-6.8-x86_64-LiveDVD.iso、ubuntu-16.04-desktop-amd64.iso
你可以安装CentOS或者ubuntu,下面以CentOS为例,如果安装 ubuntu 其中虚拟机安装步骤是相同的,镜像的安装 中系统安装可能略有差异
运行 VMware-workstation-full-12.1.0-3272444.exe 先把 VMware Workstation装好,输入秘钥
件。
GitHub链接: https://github.com/lichangke/LeetCode
个人Blog: https://lichangke.github.io/
欢迎大家来一起交流学习
pip –version
如果没安装使用如下命令安装pip(注意Python 版本):
apt-get install python3-pip
PYTHON3的PIP安装成功后 使用如下命令安装pygame:
python3 -m pip install -U pygame
python3 -m pygame.examples.aliens
GitHub链接: https://github.com/lichangke/LeetCode
个人Blog: https://lichangke.github.io/
欢迎大家来一起交流学习
给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。
设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。
注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。
示例 1:
输入: [7,1,5,3,6,4]
输出: 7
解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。
示例 2:
输入: [1,2,3,4,5]
输出: 4
解释: 在第 1 天(股票价格 = 1)的时候买入,在第 5 天 (股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。
注意你不能在第 1 天和第 2 天接连购买股票,之后再将它们卖出。
因为这样属于同时参与了多笔交易,你必须在再次购买前出售掉之前的股票。
示例 3:
输入: [7,6,4,3,1]
输出: 0
解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。
# @author:leacoder
# @des: 贪心算法 买卖股票的最佳时机 II 时间复杂度 O(n)
class Solution:
def maxProfit(self, prices: List[int]) -> int:
profit = 0
length = len(prices)
for i in range(0,length):
if i == length -1:
return profit
if prices[i]<prices[i+1]:
profit += prices[i+1]-prices[i]
return profit
GitHub链接: https://github.com/lichangke/LeetCode
个人Blog: https://lichangke.github.io/
欢迎大家来一起交流学习