leetcode–807: 保持城市天际线

在二维数组grid中,grid[i][j]代表位于某处的建筑物的高度。 我们被允许增加任何数量(不同建筑物的数量可能不同)的建筑物的高度。 高度 0 也被认为是建筑物。 最后,从新数组的所有四个方向(即顶部,底部,左侧和右侧)观看的“天际线”必须与原始数组的天际线相同。 城市的天际线是从远处观看时,由所有建筑物形成的矩形的外部轮廓。 请看下面的例子。 建筑物高度可以增加的最大总和是多少? 例子: 输入: grid = [[3,0,8,4],[2,4,5,7],[9,2,6,3],[0,3,1,0]] 输出: 35 解释: The grid is: [ [3, 0, 8, 4], [2, 4, 5, 7], [9, 2, 6, 3], [0, 3, 1, 0] ] 从数组竖直方向(即顶部,底部)看“天际线”是:[9, 4,…

Leetcode –771: 宝石与石头

给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。 J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此”a”和”A”是不同类型的石头。 示例 1: 输入: J = “aA”, S = “aAAbbbb” 输出: 3 示例 2: 输入: J = “z”, S = “ZZ” 输出: 0 注意: S 和 J 最多含有50个字母。 J 中的字符不重复。 解题思路: –…

每周点评之第二期:如何提高代码质量

如何提高代码质量?–陈天 这篇文章分别从 产品,接口,指标,日志,代码清晰度,代码复杂度 等方面,谈到如何提高代码质量。 总结起来: 1.产品和接口: 要使得原理和接口上容易理解,并且隐藏细节。 90% 以上的情况,程序员是在写 parser。换句话说,我们写的绝大部分代码就是把一系列的输入,经过若干转换(transformation),变成一系列输出。 2.指标和日志 If you can’t measure it ,you can’t improve it. 通过测量来形成负反馈,提高系统质量 3.代码清晰度和代码复杂度 多学习一些小技巧,实现对语言掌握的精进,让代码更易读,更清晰。

ROS kinetc + Xbox 360 无线手柄 使用

安装手柄接收器驱动 sudo apt-add-repository ppa:rael-gc/ubuntu-xboxdrv sudo apt-get update && sudo apt-get install ubuntu-xboxdrv 配对手柄和接收器 1.将接收器接入电脑USB 2.测试手柄 ls /dev/input/js* 如果驱动安装成功,则会显示: /dev/input/js0 /dev/input/js1 /dev/input/js2 /dev/input/js3 /dev/input/js4 因为只是接了一个设备,所以下面我们使用/dev/input/js0 测试 按手柄上的小圆球启动电源,然后长按无线启动开关,并按接收器上的按钮,等待手柄和接收器配对成功,成功后手柄上的小圆球就不会闪烁了。 sudo jstest /dev/input/js0 出现下面信息: Driver version is 2.1.0. Joystick (Xbox 360 Wireless Receiver) has…

install ros on TX2

update : – add sollution to rosdep init error excute sudo rosdep init error: ERROR: cannot download default sources list from: https://raw.githubusercontent.com/ros/rosdistro/master/rosdep/sources.list.d/20-default.list sollution: sudo apt-get install ca-certificates ——————————————————————- sudo cp /etc/apt/sources.list source_backup.list sudo vi /etc/apt/sources.list change sources.list to following txt:…

刷Jetpack3.2时安装OpenCV3.3.1失败

当使用PC,重新刷Jetpack 3.2到Jetson TX2时出现以下问题: installing OpenCV 3.3.1 failed.Return Code: 1 Error: libopencv-python libopencv-samples cannot be installed on host. Please manually run following command in terminal to install packages before continuing:sudo apt install /home/nvidia/Downloads/jetpack_download/libopencv_3.3.1_amd64.deb /home/nvidia/Downloads/jetpack_download/libopencv-dev_3.3.1_amd64.deb /home/nvidia/Downloads/jetpack_download/libopencv-python_3.3.1_amd64.deb /home/nvidia/Downloads/jetpack_download/libopencv-samples_3.3.1_amd64.deb 安装opencv3.3.1出现错误,必须先要卸载原有的opencv. 解决方法: sudo apt-get install…

每周点评之第一期:Apollo 2.5自动驾驶规划控制

自动驾驶公开课 | Apollo 2.5自动驾驶规划控制 关键词:RTK循迹、EM Planner 、Lattic Planner 关键之处: 如何去找一个成本最低的规划曲线呢?开发者面临的是一个三维空间中的优化问题,包括路面的二维平面,也包括时间维度。这是一个N立方难度的问题,Apollo 2.5的解决方法是,把这个N立方级别的问题,分拆成两个N平方级别的问题。也就是在x-y维度上求解,进行路径规划;在路径规划的基础上,以规划出来的路径为s轴,在s-t维度上进行速度规划。 Apollo 1.0中开始开放的RTK,也就是循迹Planner;Apollo 1.5中开始开放的EM Planner,也就是基于动态规划Dynamic Programming和二次规划Quadratic Programming的路径规划器与速度规划器;以及Apollo 2.5中开始开放的Lattice Planner,一种路径和速度同时规划的规划器。 RTK 先记录,然后播放来进行循迹 核心代码: #!/usr/bin/env python ############################################################################### # Copyright 2017 The Apollo Authors. All Rights Reserved. # # Licensed under the Apache…

使用dmesg 查看linux系统启动信息和处理硬件故障

最近,使用Nvida TX2的时候,USB 和 以太网口识别不了,上网查了一下如何使用dmesg查看内核信息和定位处理硬件故障,现将其总结成文。 kernel会将启动信息存储在内核环缓冲区中,dmesg则是用于检测和控制内核环缓冲,它可以用来帮助用户了解系统的启动信息,也就是系统启动过程中输出的信息。这些信息包括系统架构、CPU、连接的设备和内存等等。 基本方法: dmesg + [options] 查看启动信息 dmesg 配合使用pipe dmesg | less dmesg | more dmesg | tail 输出前20行日志 dmesg | head -20 输出最新20行日志 dmesg | tail -20 查看硬件信息 列出所有usb信息 dmesg | grep -i usb nvidia@nvidia:~$ dmesg…