“C++ 模版”

“理解模版的作用的使用”

模版(Template)作为 C++ 的语法糖,之前一直有所耳闻但没有去接触(因为一听就感觉很高大上)。前几天花了一点时间去了解模版,发现其实不难,甚至还有点简单,但是非常有用。 引 试想,如果你要计算一个整形数组 arr[] 的长度,你设立了一个函数 getLength(int *arr) 如下: 非常流畅的思路,但是写着写着,突然想再次计算一个 char 数组的长度,没有办法,我们又定义一个函数 getCharLength(char &arr) : 我们可以发现,上面两个函数,唯一的不一样就是传进来的数组类型。那么我们如果要算另外4种…

“浮点数的比较”

“如何在程序中正确的比较浮点数”

实现 因为在存储浮点数的时候系统内部在转换过程中会造成精度损失,所以比较浮点数的时候不能比较相等(==),有以下两个方案可以做到比较。 有精度损失的实现 当两个浮点数的差值小于一个极限的时候,我们可以认为他们是相等的,C++ 实现如下: 高精度的实现 但是鉴于系统的 float 或 double 本身存在精度限制,我们若要高精度比较浮点数的大小,可能考虑将浮点数读入为字符串来高精度对比。实现如下: 测试计划

“Java 运算符”

“一次性全家桶”

Java 中运算符的种类 算术运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 其他运算符 以前一直都是似懂非懂。知道一些但不知道全部;知道一部分但完整的使用还是心里有点发慌。于是趁着做 LeetCode 时遇见一道需要位运算符的题,彻底把 Java 中所有运算符全部搞清楚。 算术运算符 概述 算术运算符就是数学运算符,最基本,最简单。要是不知道这些的话基本上就不用学计算机了。数学也可以放弃了。 自增自减运算符 实例 运行结果是: 解析: int b = ++a; 实际上可以…

“LeetCode:168”

“excel-sheet-column-title”

长期更新,对使用 Java 刷 LeetCode 过程中一些有趣的题的感想和启发。 解题源代码仓库 题目 题目链接 Given a positive integer, return its corresponding column title as appear in an Excel sheet. For example: 1 -> A 2 -> B 3 -> C … 26 -> Z 27 -> AA 28 -> AB … Example 1: Input: 1 Output: “A” Example 2: Input: 28 Output: “AB” Example 3: Input: 701 Output: “ZY” 我的思路 这道题我的思路是先通过等比数列算出来结果有多少位,然后在一位一位的算出来字符。具体的算每一位的方式就是算第 m 位的时候用 n - 26^{n-1} ,再从 alphaArr 中提取。结果就是当 n = 10000001 的时候,TLE。。。 我的代码 OMG OTL!!! 最后我想了很久还是没有想出…

“LeetCode:118”

“pascals-triangle”

长期更新,对使用 Java 刷 LeetCode 过程中一些有趣的题的感想和启发。 解题源代码仓库 题目 题目链接 给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。 ! 在杨辉三角中,每个数是它左上方和右上方的数的和。 示例: 输入: 5 输出: [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ] 我的思路 显而易见这道题背后是递归的思路,每一行左右两边是两个“1”,中间是由上一排的数字生成。这道题虽然思路很简单,但是我却做了很久都不正确,有些时候发现 outputList 中出现莫名其妙的错位,错乱,让我百思不得其解。 后…

“为你的局域网树莓派添加公网 IP 和 Teamviewer”

“可以在外面码代码了”

登陆你的树莓派并修改 SSH 密码 以前树莓派自己一个人在局域网中使用还好,如果要放入公网中,那么 SSH 密码就不能是默认的 raspberry 了,使用 ssh pi@[IP] 登陆树莓派的 pi 用户后,键入命令 passwd 修改当前用户密码。 使用 ngrok 建立树莓派的公网映射 如果自己的网络被分配了公网的 ip 的话可以直接在路由器中开启映射,但是不幸的是我的运营商并没有为我分配公网 ip,就算分配了,忘记了路由器密码的我也无法使用路由器配置。有人问我为什么不重置路由器设置回复密码,因为…

“LeetCode:3”

“longest-substring-without-repeating-characters”

长期更新,对使用 Java 刷 LeetCode 过程中一些有趣的题的感想和启发。 解题源代码仓库 题目 题目链接 给定一个字符串,找出不含有重复字符的最长子串的长度。 示例 1: 输入: “abcabcbb” 输出: 3 解释: 无重复字符的最长子串是 “abc”,其长度为 3。 示例 2: 输入: “bbbbb” 输出: 1 解释: 无重复字符的最长子串是 “b”,其长度为 1。 示例 3: 输入: “pwwkew” 输出: 3 解释: 无重复字符的最长子串是 “wke”,其长度为 3。 请注意,答案必须是一个子串,”pwke” 是一个子序列 而不是子串。 我的思路 思路如下: 首先从第零位…

“为什么我最终还是选择了 iPad + Apple Pencil + Notability”

“应该把问题简单化”

引言 使用了 OneNote 大约两个星期后,我终于还是前往 Apple Store 购买了 iPad 2018 + Apple Pencil. 而在买之后的三节课中,我就已经明白了我是做了多正确的一个决定。 为什么要弃用 OneNote 果然还是时间问题,一节100分钟的课程需要60分钟的课后时间还整理笔记实在是亏本的。更何况最近我很荣幸考上了我校计算机专业的珠峰计划班,原本就比较紧的课程变得更多了。我很难再挤出时间来做笔记,OneNote 上更多的变成了虚无的录音,而没有整理。我极其需要一个可以在上课的时候做笔记

“LeetCode:20”

“vaild-parentheses”

长期更新,对使用 Java 刷 LeetCode 过程中一些有趣的题的感想和启发。 解题源代码仓库 题目 题目链接 给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 注意空字符串可被认为是有效字符串。 示例 1: 输入: “()” 输出: true 示例 2: 输入: “()[]{}” 输出: true 示例 3: 输入: “(]” 输出: false 示例 4: 输入: “([)]” 输出: false 示例 5: 输入: “{[]}” 输出: true 我的思路 思路如下: 创建一个单向数组,进的时候随便进…

“LeetCode:15”

“3sum”

长期更新,对使用 Java 刷 LeetCode 过程中一些有趣的题的感想和启发。 解题源代码仓库 题目 题目链接 Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. Note: The solution set must not contain duplicate triplets. Example: Given array nums = [-1, 0, 1, 2, -1, -4], A solution set is: [ [-1, 0, 1], [-1, -1, 2] ] 我的思路 思路如下: 现排序; 双重循环寻找匹配的数组; 找到后先与前一个数组比较,不相同的话就加入 output。 我的代码