Kindle 换美区超详细教程
前言根据亚马逊官方消息,kindle中国运营在2024年6月30日将全面停止运营!
6月30日后,将无法继续从应用商店下载Kindle APP,以后kindle APP仅能阅读已经下载的电子书。
云端服务也将全面停止所有云端内容必须在6月30日之前下载,云端内容包含电子书及个人文档。
Send to Kindle也将于6月30日关闭,包含浏览器传送、邮箱传送等所有无线传输路径,以后传输只能数据线传输。
但是,这能难倒我们国人吗?既然中国区停了,那我们换个正常运营的区是不是就行了!
于是在即将停服的前3天,通过查询资料,加上自己亲自动手,Kindle换美区成功,完美迁移,继续邮箱传书!
换区教程第一步、备份当前Kindle图书数据
用数据线把kindle和电脑连接,打开我的电脑,找到Kindle磁盘(连接数据线时要解锁Kindle)。
找到documents文件夹,直接将整个文件夹复制一份到电脑桌面。(这个文件夹包含了电子书、浏览记录、摘要笔记等内容)
第二步、注册亚马逊美区账号
首先进入亚马逊美区(注意结尾是.com不是.cn)https://www.amazon.com/
...
剑指Offer(06)从头到尾打印链表
今天要练习的题目是:剑指 Offer 的第 6 题,从头到尾打印链表
题目要求
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例:
12输入:head = [1,3,2]输出:[2,3,1]
提示:
0 <= 链表长度 <= 10000
解题思路首先这道题的输入是从头到位,但是输出却是从尾到头。也就是FILO先进后出,这妥妥的就是栈结构嘛。所以我们可以遍历一遍链表,然后将每一项都存入数组中,最后反转数组即可。
栈结构12345678910111213141516171819202122232425262728/** * Definition for singly-linked list. * function ListNode(val) { * this.val = val; * this.next = null; * } *//** * @param {ListNode} head * @return {number[]} */var reversePrint ...
剑指Offer(05)替换空格
今天要练习的题目是:剑指 Offer 的第 5 题,替换空格
题目要求
请实现一个函数,把字符串s中的每个空格替换成”%20”。
示例:
12输入:s = "We are happy."输出:"We%20are%20happy."
提示:
0 <= s 的长度 <= 10000
解题思路这道题其实还是蛮简单的一道题,看过题目后小呆至少能想到三种方法:正则、分割、遍历。
正则1234567/** * @param {string} s * @return {string} */var replaceSpace = function (s) { return s.replace(/\s/g, '%20')}
分割1234567/** * @param {string} s * @return {string} */var replaceSpace = function (s) { return ...
剑指Offer(04)二维数组中的查找
今天要练习的题目是:剑指 Offer 的第 4 题,二维数组中的查找
题目要求
在一个n * m的二维数组中,每一行都按照从左到右非递减的顺序排序,每一列都按照从上到下非递减的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
来源:力扣(LeetCode)链接:著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
示例:
现有矩阵 matrix 如下:
1234567[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30]]
给定 target = 5,返回true。
给定 target = 20,返回false。
提示:
0 <= n <= 1000
0 <= m <= 1000
解题思路这道题小呆的思路是先找出题中的二维数组规律。然后进行分析:因为这个二维数组每一行从左到右递增,每一列从上到下递增 ...
剑指Offer(03)数组中重复的数字
今天要练习的题目是:剑指 Offer 的第 3 题,数组中重复的数字
题目要求
找出数组中重复的数字。
在一个长度为n的数组nums里的所有数字都在0~n-1的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。
示例:
123输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3
提示:
2 <= n <= 100000
解题思路这道题的常规解法,就是利用哈希表,遍历数组,判断哈希表中是否包含当前值,如果包含,当前项就是重复项。这种在数组中查找重复的数字的题型,基本都可以用哈希表去解决,它的时间复杂度为O(n),空间复杂度为O(n)。
哈希表1234567891011/** * @param {number[]} nums * @return {number} */var findRepeatNumber = function (nums) { let hasMap = new Set() for (let num of nums) ...
LeetCode(118)杨辉三角
今天要练习的题目是:力扣(LeetCode)的第 118 题,杨辉三角
题目要求
给定一个非负整数*numRows,生成「杨辉三角」的前numRows*行。
在「杨辉三角」中,每个数是它左上方和右上方的数的和。
示例:
12345输入: numRows = 5输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]输入: numRows = 1输出: [[1]]
提示:
1 <= numRows <= 30
解题思路这道题其实官方已经给了非常容易理解的规律和图示:每个数是它左上方和右上方的数的和。
我们可以用一个二维数组来描述示例 1 的数据:
1let list = [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1], [1, 4, 6, 4, 1]]
根据上面给出的规律能够得出, 首尾的数字一定是 1, 其次从第三行开始,除去首尾,其他的数字都是它左上方和右上方的数的和,所以我们可以做出以下公式:(用i表示行,用j表示列)
list[i][0] = 1 每行的第一个数字是 1
list[i][j ...
LeetCode(169)多数元素
今天要练习的题目是:力扣(LeetCode)的第 169 题,多数元素
题目要求
给定一个大小为n的数组nums,返回其中的多数元素。多数元素是指在数组中出现次数大于⌊ n/2 ⌋的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
示例:
12345输入:nums = [3,2,3]输出:3输入:nums = [2,2,1,1,1,2,2]输出:2
提示:
n == nums.length
1 <= n <= 5 * 104
-109 <= nums[i] <= 109
解题思路这道题小呆的第一思路就是用哈希表来解决,因为跟返回数组中出现次数最多的题的思路是一样的,只不过这道题是返回次数大于n/2的那个元素。
12345678910111213141516171819/** * @param {number[]} nums * @return {number} */var majorityElement = function (nums) { let hasMap = new Ma ...
LeetCode(141)环形链表
今天要练习的题目是:力扣(LeetCode)的第 141 题,环形链表
题目要求
给你一个链表的头节点head,判断链表中是否有环。
如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos不作为参数进行传递 。仅仅是为了标识链表的实际情况。
如果链表中存在环 ,则返回true。 否则,返回false。
示例:
123输入:head = [3,2,0,-4], pos = 1输出:true解释:链表中有一个环,其尾部连接到第二个节点。
提示:
链表中节点的数目范围是[0, 10^4]
-10^5 <= Node.val <= 10^5
pos为-1 或者链表中的一个有效索引。
解题思路遇到数组,链表类的题目,首先考虑的就是双指针算法。在这道题中,由于存在一个环,实际上在遍历的时候,如果进入环中,就会无限循环。那其实只要两个指针的步频不一样,就会相交。上图辅助理解:
123456789101112131415161718192 ...
LeetCode(121)买卖股票的最佳时机
今天要练习的题目是:力扣(LeetCode)的第 121 题,买卖股票的最佳时机
题目要求
给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格。
你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润。
返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回0。
示例:
12345678输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;同时,你不能在买入前卖出股票。输入:prices = [7,6,4,3,1]输出:0解释:在这种情况下, 没有交易完成, 所以最大利润为 0。
提示:
1 <= prices.length <= 10^5
0 <= prices[i] <= 10^4
解题思路这道题首先我们要明确一个股票买卖的规则就是:当天买入,第二天及以后才能卖 ...
LeetCode(136)只出现一次的数字
今天要练习的题目是:力扣(LeetCode)的第 136 题,只出现一次的数字
题目要求
给你一个非空整数数组nums,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。
你必须设计并实现线性时间复杂度的算法来解决此问题,且该算法只使用常量额外空间。
示例:
12345输入:nums = [2,2,1]输出:1输入:nums = [4,1,2,1,2]输出:4
提示:
1 <= nums.length <= 3 * 10^4
-3 * 10^4 <= nums[i] <= 3 * 10^4
除了某个元素只出现一次以外,其余每个元素均出现两次。
解题思路这道题小呆首先想到的是哈希集合,因为题目中讲到:除了某个元素只出现一次以外,其余每个元素均出现两次。所以我们不能直接数组去重,但是我们可以利用Set集合存储的值唯一这个特性,去遍历数组,如果遍历过程中哈希集合中存储过当前项,那说明当前元素不唯一,直接删掉。循环结束后,就得出了那个不唯一的元素。
123456789101112131415/** * @param { ...