<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Novice-XiaoSong的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/SJ1551</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; SJ1551]]></copyright><item><title><![CDATA[win 修改 git 登录凭证]]></title><link>https://blog.youkuaiyun.com/SJ1551/article/details/116495582</link><guid>https://blog.youkuaiyun.com/SJ1551/article/details/116495582</guid><author>SJ1551</author><pubDate>Fri, 07 May 2021 16:00:34 +0800</pubDate><description><![CDATA[在使用 HbuilderX IDE 开发时，有一次使用 git push 代码时，账号密码输入错误，导致后续的 git 操作都出现账号密码验证失败。但又找不到 git 账号密码重新设置的入口。

解决方案
控制面板 -&gt; 用户账户 -&gt; 凭据管理器 -&gt; Windows 凭据 -&gt; 找到自己的 git 凭据 -&gt; 编辑（修改账号密码）

...]]></description><category></category></item><item><title><![CDATA[uni-app 系统目录文件上传（非只图片和视频）解决方案]]></title><link>https://blog.youkuaiyun.com/SJ1551/article/details/112749572</link><guid>https://blog.youkuaiyun.com/SJ1551/article/details/112749572</guid><author>SJ1551</author><pubDate>Sun, 17 Jan 2021 16:06:11 +0800</pubDate><description><![CDATA[uni-app系统目录文件上传（非只图片和视频）解决方案
安卓端 系统目录文件选取和路径获取 可以看这篇


]]></description><category></category></item><item><title><![CDATA[css 实现水平垂直居中]]></title><link>https://blog.youkuaiyun.com/SJ1551/article/details/111657189</link><guid>https://blog.youkuaiyun.com/SJ1551/article/details/111657189</guid><author>SJ1551</author><pubDate>Thu, 24 Dec 2020 22:49:30 +0800</pubDate><description><![CDATA[一、通过设置子元素
.parent{
	position: absolute;	/* 非static即可 */
	width: 500px;
	height: 300px;
}

子元素知道 width, height


position, top, left, transform
.child{
	width: 100px;
	height: 50px;
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50px, -2]]></description><category></category></item><item><title><![CDATA[旋转图像]]></title><link>https://blog.youkuaiyun.com/SJ1551/article/details/111405611</link><guid>https://blog.youkuaiyun.com/SJ1551/article/details/111405611</guid><author>SJ1551</author><pubDate>Sat, 19 Dec 2020 16:06:17 +0800</pubDate><description><![CDATA[leetcode 48题 [medium]
中：旋转图像
英：Rotate Image


题解1
1. 思路：从外层到里层一层一层旋转

2. 时间复杂度：O(n²)
3. 空间复杂度：O(1)
4. 实现
/**
 * @param {number[][]} matrix
 * @return {void} Do not return anything, modify matrix in-place instead.
 */
var rotate = function(matrix) {
    le.]]></description><category></category></item><item><title><![CDATA[找不同]]></title><link>https://blog.youkuaiyun.com/SJ1551/article/details/111386854</link><guid>https://blog.youkuaiyun.com/SJ1551/article/details/111386854</guid><author>SJ1551</author><pubDate>Fri, 18 Dec 2020 18:07:27 +0800</pubDate><description><![CDATA[leetcode 389题 [easy]
中：找不同
英：Find The Difference


题解1
1. 思路：ASCII，求和，求差

两个字符串分别对各ASCII求和
计算和值的差值

2. 时间复杂度：O(n)
3. 空间复杂度：O(1)
4. 实现
/**
 * @param {string} s
 * @param {string} t
 * @return {character}
 */
var findTheDifference = function(s, t) {
    let.]]></description><category></category></item><item><title><![CDATA[只出现一次的数字]]></title><link>https://blog.youkuaiyun.com/SJ1551/article/details/111386218</link><guid>https://blog.youkuaiyun.com/SJ1551/article/details/111386218</guid><author>SJ1551</author><pubDate>Fri, 18 Dec 2020 17:36:28 +0800</pubDate><description><![CDATA[leetcode 136题 [easy]
中：只出现一次的数字
英：Single Number


题解
1. 思路：位运算（异或）

a⨁0=aa \bigoplus 0 = aa⨁0=a：与0异或，等于原数本身
a⨁a=0a \bigoplus a = 0a⨁a=0：自己与自己异或结果为0
a⨁b⨁c=a⨁c⨁ba \bigoplus b \bigoplus c = a \bigoplus c \bigoplus ba⨁b⨁c=a⨁c⨁b：异或操作遵循交换律和结合律

2. 时间复杂度：O(n)
3..]]></description><category></category></item><item><title><![CDATA[字母异位词分组]]></title><link>https://blog.youkuaiyun.com/SJ1551/article/details/111187340</link><guid>https://blog.youkuaiyun.com/SJ1551/article/details/111187340</guid><author>SJ1551</author><pubDate>Mon, 14 Dec 2020 23:10:21 +0800</pubDate><description><![CDATA[leetcode 49题 [medium]
中：字母异位词分组
英：Group Anagrams

一、题解1
1. 思路：排序（字典序）
2. 时间复杂度：O(n * mlogm) n: 数组长度，m: 字符串最大长度
3. 空间复杂度：O(n * k) n: 数组长度，k: 字符串平均长度
4. 实现
/**
 * @param {string[]} strs
 * @return {string[][]}
 */
var groupAnagrams = function(strs) {
    //.]]></description><category></category></item><item><title><![CDATA[javascript 暂时性死区]]></title><link>https://blog.youkuaiyun.com/SJ1551/article/details/111136624</link><guid>https://blog.youkuaiyun.com/SJ1551/article/details/111136624</guid><author>SJ1551</author><pubDate>Sun, 13 Dec 2020 17:37:46 +0800</pubDate><description><![CDATA[暂时性死区：ES6之前JS的一个BUG（美其名曰暂时性死区)。在使用 typeof 等运算符操作一个未声明的变量时，不会报错，该变量的值以 undefined 作处理
ES6：ES6的变量声明方法(let, const, class…)解决了暂时性死区问题，会进行显式报错。




ES6之前的暂时性死区
console.log(typeof a);	// undefined （no error）



ES6之后的变量声明
console.log(typeof a);	// Uncaught Refe..]]></description><category></category></item><item><title><![CDATA[浏览器 如何在老版本浏览器环境下调试代码]]></title><link>https://blog.youkuaiyun.com/SJ1551/article/details/111122272</link><guid>https://blog.youkuaiyun.com/SJ1551/article/details/111122272</guid><author>SJ1551</author><pubDate>Sun, 13 Dec 2020 15:43:07 +0800</pubDate><description><![CDATA[学习过程中经常看到，“老版本环境下的执行结果是balabala…”，但现在使用的浏览器大都是新版本浏览器，就算使用IE的话，也都是IE11以上，那我们要如何进入老版本环境进行代码调试呢？

利用IE浏览器的仿真选项卡

打开IE(Internet Explorer)浏览器
F12 打开开发者工具
切换到 仿真 选项卡
切换 “文档模式” 为10或以下



...]]></description><category></category></item><item><title><![CDATA[数组中出现次数超过一半的数字]]></title><link>https://blog.youkuaiyun.com/SJ1551/article/details/111091782</link><guid>https://blog.youkuaiyun.com/SJ1551/article/details/111091782</guid><author>SJ1551</author><pubDate>Sun, 13 Dec 2020 11:47:16 +0800</pubDate><description><![CDATA[剑指Offer 39 数组中出现次数超过一半的数字 [easy]


一、题解1
1. 思路：hash字典

hash 字典统计数量，数量大于数组长度一半时返回结果

2. 时间复杂度：O(n)
3. 空间复杂度：O(n)
二、题解2
1. 思路：排序

排序
排序后的中位数一定是的结果

2. 时间复杂度：O(nlogn)
3. 空间复杂度：O(logn) 排序递归栈空间
4. 实现
/**
 * @param {number[]} nums
 * @return {number}
 */
var ma.]]></description><category></category></item><item><title><![CDATA[二进制中1的个数]]></title><link>https://blog.youkuaiyun.com/SJ1551/article/details/111089068</link><guid>https://blog.youkuaiyun.com/SJ1551/article/details/111089068</guid><author>SJ1551</author><pubDate>Sun, 13 Dec 2020 10:49:15 +0800</pubDate><description><![CDATA[剑指Offer 15 二进制中1的个数 [easy]


一、题解1
1. 思路

对数字循环进行取模(奇偶判断)和除以2(无符号右移)的操作
使用位运算加快运算速度

2. 时间复杂度：O(logn) 其实就是二进制数的位数log2n+1log_2n + 1log2​n+1
3.  空间复杂度：O(1)
4. 实现
/**
 * @param {number} n - a positive integer
 * @return {number}
 */
var hammingWeight = funct.]]></description><category></category></item><item><title><![CDATA[LRU 缓存机制]]></title><link>https://blog.youkuaiyun.com/SJ1551/article/details/110919898</link><guid>https://blog.youkuaiyun.com/SJ1551/article/details/110919898</guid><author>SJ1551</author><pubDate>Wed, 09 Dec 2020 12:11:57 +0800</pubDate><description><![CDATA[leetcode 146题 [medium]
中：LRU 缓存机制
英：LRU Cache


题解
1. 思路

使用双向链表，链表头为下一次需要剔除出缓存的数据，尾部为最近操作过的数据。（使得put为O(1)的时间复杂度）

LRU未满，直接尾部添加新元素
LRU满，删除头节点，尾部新增新数据


使用原生对象(hash)，键值对使得数据键与链表节点一一对应（使得get为O(1)的时间复杂度）

访问LRU，借助hash获取到相应的链表结点，借助链表的双向指针更新链表数据顺序



2. 时间复杂度：.]]></description><category></category></item><item><title><![CDATA[将数组拆分成斐波那契序列]]></title><link>https://blog.youkuaiyun.com/SJ1551/article/details/110869116</link><guid>https://blog.youkuaiyun.com/SJ1551/article/details/110869116</guid><author>SJ1551</author><pubDate>Tue, 08 Dec 2020 11:58:54 +0800</pubDate><description><![CDATA[leetcode 842题 [medium]
中：将数组拆分成斐波那契序列
英：Split Array Into Fibonacci Sequence


题解
1. 思路（回溯 + 剪枝）

其实主要就是确定斐波那契数列的第1、2个数，后边的相应就确定了

2. 时间复杂度：O(n²)
3. 空间复杂度：O(n)     记录结果
4. 实现
/**
 * @param {string} S
 * @return {number[]}
 */
var splitIntoFibonacci = funct.]]></description><category></category></item><item><title><![CDATA[最大交换]]></title><link>https://blog.youkuaiyun.com/SJ1551/article/details/110825813</link><guid>https://blog.youkuaiyun.com/SJ1551/article/details/110825813</guid><author>SJ1551</author><pubDate>Mon, 07 Dec 2020 19:46:26 +0800</pubDate><description><![CDATA[leetcode 670 [medium]
中：最大交换
英：Maximum Swap


题解
1. 思路（栈 + 贪心）

从末尾遍历num各位，若当前元素比栈顶元素大(空栈直接入栈)，入栈。直到num头或者当前位为9。
从起始遍历num各位，比较当前位于栈顶元素的大小和位置关系
（1）若当前元素比栈顶元素小，且满足当前元素在高位，栈顶元素在低位，则交换，返回结果；
（2）若不满足高低位关系，则栈顶元素出栈，继续比较；
（3）若栈为空，说明无需交换；

2. 时间复杂度：O(n)
3. 空间复杂度：O.]]></description><category></category></item><item><title><![CDATA[旋转数组的最小数字]]></title><link>https://blog.youkuaiyun.com/SJ1551/article/details/110808922</link><guid>https://blog.youkuaiyun.com/SJ1551/article/details/110808922</guid><author>SJ1551</author><pubDate>Mon, 07 Dec 2020 12:22:11 +0800</pubDate><description><![CDATA[剑指Offer 11 [easy]


题解
1. 思路：二分法

找右侧比numbers[0]小的左边界

2. 时间复杂度：O(logn)
3. 空间复杂度：O(1)
4. 实现
/**
 * @param {number[]} numbers
 * @return {number}
 */
var minArray = function(numbers) {
    // 预处理
    if(numbers.length &lt;= 1) return numbers[0];

    // 二分.]]></description><category></category></item><item><title><![CDATA[青蛙跳台阶问题]]></title><link>https://blog.youkuaiyun.com/SJ1551/article/details/110802417</link><guid>https://blog.youkuaiyun.com/SJ1551/article/details/110802417</guid><author>SJ1551</author><pubDate>Mon, 07 Dec 2020 11:34:55 +0800</pubDate><description><![CDATA[剑指 Offer 10 [easy]


题解
1. 思路：动态规划


状态转移方程：dp[n] = dp[n-1] + dp[n-2]

从终点开始考虑。

青蛙最后一次跳1步的情况：情况数 = 有 n-1 阶台阶的情况
青蛙最后一次跳2步的情况：情况数 = 有 n-2 阶台阶的情况




dp[0] = 1, dp[1] = 1


2. 时间复杂度：O(n)
3. 空间复杂度：O(1)
4. 实现
/**
 * @param {number} n
 * @return {number}
 */
.]]></description><category></category></item><item><title><![CDATA[翻转矩阵后的得分]]></title><link>https://blog.youkuaiyun.com/SJ1551/article/details/110796445</link><guid>https://blog.youkuaiyun.com/SJ1551/article/details/110796445</guid><author>SJ1551</author><pubDate>Mon, 07 Dec 2020 10:53:53 +0800</pubDate><description><![CDATA[leetcode 861 [medium]
中：翻转矩阵后的得分
英：Score After Flipping Matrix


题解
1. 思路：贪心

旋转行使得第一列全为1
旋转列使得每列1最多

2. 时间复杂度：O(n * m)

n: 行数；m：列数
第一次遍历完成 “旋转行使得第一列全为1”；同时统计每一列1的个数
第二次遍历完成 “旋转列使得每列1最多”

3. 空间复杂度：O(m)

第一次遍历后记录每一列1的个数

4. 实现
/**
 * @param {number[][]} A
.]]></description><category></category></item><item><title><![CDATA[反转链表]]></title><link>https://blog.youkuaiyun.com/SJ1551/article/details/110763661</link><guid>https://blog.youkuaiyun.com/SJ1551/article/details/110763661</guid><author>SJ1551</author><pubDate>Sun, 06 Dec 2020 20:56:14 +0800</pubDate><description><![CDATA[剑指offer 24 反转链表 [easy] 


题解1


思路：栈


时间复杂度：O(n) O(2 * n) 入栈 + 出栈


空间复杂度：O(n) 栈空间


实现
/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @retur.]]></description><category></category></item><item><title><![CDATA[杨辉三角]]></title><link>https://blog.youkuaiyun.com/SJ1551/article/details/110732663</link><guid>https://blog.youkuaiyun.com/SJ1551/article/details/110732663</guid><author>SJ1551</author><pubDate>Sun, 06 Dec 2020 11:48:58 +0800</pubDate><description><![CDATA[一、什么是杨辉三角

杨辉三角：是二项式系数在三角形中的一种几何排列。
杨辉三角的每个数等于它上方两数之和。


二、求杨辉三角第n行

杨辉三角第n行第m个数的值为组合数 Cn−1m−1C_{n-1}^{m-1}Cn−1m−1​ 的结果



代码

leetcode 119题 杨辉三角Ⅱ

/**
 * @param {number} rowIndex
 * @return {number[]}
 */
var getRow = function(rowIndex) {
    /**
     * 数]]></description><category></category></item><item><title><![CDATA[javascript 变量的声明与提升]]></title><link>https://blog.youkuaiyun.com/SJ1551/article/details/109363325</link><guid>https://blog.youkuaiyun.com/SJ1551/article/details/109363325</guid><author>SJ1551</author><pubDate>Wed, 02 Dec 2020 19:48:54 +0800</pubDate><description><![CDATA[一、var


没有块的概念（可以跨块访问，不能跨函数访问）
未初始化时默认为 undefined
变量提升
可重复定义（使用变量提升解释）




变量提升

var 声明的变量在js中会经历了两个阶段

编译阶段进行变量声明提升
执行阶段进行赋值


下面举几个栗子
// 栗子1
console.log(value);
var value = 8;
console.log(value);

// js进行变量提升后实际的执行顺序是
var value;
console.log(value);
value]]></description><category></category></item></channel></rss>