<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[lgz0921的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/lgz0921</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; lgz0921]]></copyright><item><title><![CDATA[第一节（学习HarmonyOS的背景）]]></title><link>https://blog.csdn.net/lgz0921/article/details/135222017</link><guid>https://blog.csdn.net/lgz0921/article/details/135222017</guid><author>lgz0921</author><pubDate>Tue, 26 Dec 2023 14:53:59 +0800</pubDate><description><![CDATA[去华为官网学习即可，资料很全，讲的很详细。去什么地方学习HarmonyOS？长篇大论不写了，就总结四个字吧，为什么学习HarmonyOS？]]></description><category></category></item><item><title><![CDATA[2023-10-24]]></title><link>https://blog.csdn.net/lgz0921/article/details/134019425</link><guid>https://blog.csdn.net/lgz0921/article/details/134019425</guid><author>lgz0921</author><pubDate>Tue, 24 Oct 2023 19:10:04 +0800</pubDate><description><![CDATA[2023年1024，祝大佬们早日财富自由！]]></description><category></category></item><item><title><![CDATA[如何系统的学习一门it技术]]></title><link>https://blog.csdn.net/lgz0921/article/details/131035558</link><guid>https://blog.csdn.net/lgz0921/article/details/131035558</guid><author>lgz0921</author><pubDate>Sun, 04 Jun 2023 19:04:07 +0800</pubDate><description><![CDATA[选择自己感兴趣的技术（别在乎别人的看法，感兴趣才是最重要的）根据自己的兴趣加上这个行业的发展前景去做选择如果自己什么也不懂，可以看看培训机构的课程（这里不是说去报班，而是可以看他们的教学的内容，然后去自学）如果自学能力差，可以选择报班最后说一句：兴趣很重要。]]></description><category></category></item><item><title><![CDATA[被3整除的子序列（线性dp）]]></title><link>https://blog.csdn.net/lgz0921/article/details/130302780</link><guid>https://blog.csdn.net/lgz0921/article/details/130302780</guid><author>lgz0921</author><pubDate>Sat, 22 Apr 2023 11:58:26 +0800</pubDate><description><![CDATA[给你一个长度为50的数字串,问你有多少个子序列构成的数字可以被3整除
答案对1e9+7取模]]></description><category></category></item><item><title><![CDATA[791. 自定义字符串排序]]></title><link>https://blog.csdn.net/lgz0921/article/details/127833875</link><guid>https://blog.csdn.net/lgz0921/article/details/127833875</guid><author>lgz0921</author><pubDate>Sun, 13 Nov 2022 16:43:40 +0800</pubDate><description><![CDATA[思路：算是个简单题吧，中等有点过分了。用 map 通过 order 字符串重新定义下每个字符的大小关系，然后对 s 按照记录的大小关系排序即可。map 里面没有的字符，默认大小为任意一个值就可以了（因为可以在任意一个位置），我这里写的默认值是 0。]]></description><category></category></item><item><title><![CDATA[解决“¥”符号在安卓上显示只有一个横杠的问题]]></title><link>https://blog.csdn.net/lgz0921/article/details/127639574</link><guid>https://blog.csdn.net/lgz0921/article/details/127639574</guid><author>lgz0921</author><pubDate>Tue, 01 Nov 2022 19:38:11 +0800</pubDate><description><![CDATA[每个普通字符（或半角字符）只占用一字节的空间（一字节有8位，共256个编码空间），而汉语、日语、及朝鲜文等文字语言的字库量远大于256个，所以改用两个字节来储存。同时，也是因为中日韩等文字的书写习惯，如果统一使用全角字符的话，排列起来也显得整齐。出现显示只有一个横杠是因为使用了全角的“￥” ，在安卓上会出现兼容的问题，使用半角的就没问题了。可以选中看下区别，全角的明显会宽（一个汉字的宽度），半角（半个汉字的宽度）。全角占两个字节，半角占一个字节。]]></description><category></category></item><item><title><![CDATA[1768. 交替合并字符串]]></title><link>https://blog.csdn.net/lgz0921/article/details/127475927</link><guid>https://blog.csdn.net/lgz0921/article/details/127475927</guid><author>lgz0921</author><pubDate>Sun, 23 Oct 2022 15:57:12 +0800</pubDate><description><![CDATA[做个水题放松下！for循环一遍即可，不过多解释了，直接看代码。]]></description><category></category></item><item><title><![CDATA[git reset 三种形式]]></title><link>https://blog.csdn.net/lgz0921/article/details/127447527</link><guid>https://blog.csdn.net/lgz0921/article/details/127447527</guid><author>lgz0921</author><pubDate>Fri, 21 Oct 2022 15:43:31 +0800</pubDate><description><![CDATA[git reset --soft 
git reset --mixed 
git reset --hard ]]></description><category></category></item><item><title><![CDATA[git stash用法]]></title><link>https://blog.csdn.net/lgz0921/article/details/127349845</link><guid>https://blog.csdn.net/lgz0921/article/details/127349845</guid><author>lgz0921</author><pubDate>Sun, 16 Oct 2022 17:31:25 +0800</pubDate><description><![CDATA[使用场景：多个需求同时开发的时候，需要不同的分支，在一个需求没开发完，想去另一个分支的时候，又不想。该命令不会将内容从对堆栈中删除，也就是该命令能够将堆栈的内容多次运用到工作目录。将堆栈中的内容恢复到当前分支下。栈中只有一条的时候使用，以免混乱。，区别是可以加⼀些注释，添加注释，⽅便查找。注：该命令将堆栈中最新保存的内容删除并恢复。写在前面：从栈中用的时候千万别搞错了！和当前⽬录的差异，显⽰做了哪些改动，默认。的状态，把当前的修改的保存到。中的操作来删除栈里面的内容。栈，等以后需要的时候再恢复，]]></description><category></category></item><item><title><![CDATA[73. 矩阵置零]]></title><link>https://blog.csdn.net/lgz0921/article/details/127193438</link><guid>https://blog.csdn.net/lgz0921/article/details/127193438</guid><author>lgz0921</author><pubDate>Fri, 07 Oct 2022 13:42:41 +0800</pubDate><description><![CDATA[思路：因为m和n最大是200，所以就算每个数都不一样最多有400个不同的数，所以我们从0到400中必然能找到一个数与矩阵中所有数都不一样的值，我们就用这个数来标记就可以了。注意：标记的时候不能改变原先为0的值，因为后面还要用原先为0的值来做改变。最后把标记的值变成0就可以了。时间复杂度：O(401*mn)空间复杂度：O(1)]]></description><category></category></item><item><title><![CDATA[229. 多数元素 II]]></title><link>https://blog.csdn.net/lgz0921/article/details/127129325</link><guid>https://blog.csdn.net/lgz0921/article/details/127129325</guid><author>lgz0921</author><pubDate>Fri, 30 Sep 2022 21:44:23 +0800</pubDate><description><![CDATA[数据大于floor(n/3)向下取整的数最多只有两个（仔细想想），或者1个，或者没有。这样的话就采取类似最近很火的游戏“羊了个羊”消除，当然区别就是我们槽位只有2个，点击第三个的时候只有不一样这三个才会同时消除，如果相同就叠在对应的槽位上，这样最后剩下的两个槽位上面的值才有可能大于floor(n/3)，为什么说有可能，因为存在一种特殊情况：【3，2，3】，这种情况下通过我们的算法最后会出现，第一个槽位剩下3，第二个槽位剩下2，但是只有3是满足的，所以最后我们再把这两个值验证一下即可。]]></description><category></category></item><item><title><![CDATA[Error: INSTALL_FAILED_TEST_ONLY]]></title><link>https://blog.csdn.net/lgz0921/article/details/126860467</link><guid>https://blog.csdn.net/lgz0921/article/details/126860467</guid><author>lgz0921</author><pubDate>Wed, 14 Sep 2022 21:11:29 +0800</pubDate><description><![CDATA[原因：Android Studio 3.0之后，在打包生成debug apk时，在apk的manifest文件的application标签里自动添加 android:testOnly="true"属性。android:testOnly=“true” 这个标记原本是用来标记测试用的，所以带这个标记的包一般情况下是不能安装上的，需要使用特殊的方式安装（添加-t标志）。方法一：在项目中的全局配置gradle.properties文件中设置：android.injected.testOnly=false。]]></description><category></category></item><item><title><![CDATA[各位好友，中秋节快乐]]></title><link>https://blog.csdn.net/lgz0921/article/details/126800173</link><guid>https://blog.csdn.net/lgz0921/article/details/126800173</guid><author>lgz0921</author><pubDate>Sat, 10 Sep 2022 22:16:51 +0800</pubDate><description><![CDATA[好久不写博客了，排名也跌了不少，从之前的5000到现在20000多，释怀了。也给自己一个提醒吧，不能躺平，要持续学习才行。因为作者是做客户端的，现在在考虑学习一些新的知识，防止客户端凉了。不过在搞其他的东西之前，自己还是坚持写写算法，也不说坚持了，单纯喜欢。感觉英语还是很重要的。为什么这么说，因为在平时变量起名字的时候，英语不好，都不知道起什么名字好，记得有一次写完m后面就不知道写啥了。好久没更新文章了，最近因为工作变动，一直在等消息，没心情写博客。现在消息确定了，还算是好消息。哈哈，什么消息就不说了。]]></description><category></category></item><item><title><![CDATA[1302. 层数最深叶子节点的和]]></title><link>https://blog.csdn.net/lgz0921/article/details/126387232</link><guid>https://blog.csdn.net/lgz0921/article/details/126387232</guid><author>lgz0921</author><pubDate>Wed, 17 Aug 2022 15:36:06 +0800</pubDate><description><![CDATA[思路：bfs一层一层求和，当没有下一层的时候（就是队列为empty的时候）就是最后一层，记录下结果即可。]]></description><category></category></item><item><title><![CDATA[给textView设置文字渐变色]]></title><link>https://blog.csdn.net/lgz0921/article/details/126062760</link><guid>https://blog.csdn.net/lgz0921/article/details/126062760</guid><author>lgz0921</author><pubDate>Fri, 29 Jul 2022 19:50:53 +0800</pubDate><description><![CDATA[一定要先设置shader，在设置字。如果先设置的字或者在xml里面设置的字，就需要设置完shader之后调用一下触发重新绘制的代码。4.最后一个参数为渐变的效果，我这里选择的就是从开始的颜色渐变到结束的颜色，这里不再赘述，感兴趣的可以去搜下各种渐变的效果。viewBinding.title这是一个textView。3.第5个参数为开始的颜色，第6个参数为结束的颜色。2.前4个参数为描述位置，我这里描述的是从上到下。从上到下x=x1y改变。从左到右x改变y=y1。......]]></description><category></category></item><item><title><![CDATA[recycleView自定义ItemDecoration解决列表第一个item和最后一个item的间距难统一问题]]></title><link>https://blog.csdn.net/lgz0921/article/details/125450841</link><guid>https://blog.csdn.net/lgz0921/article/details/125450841</guid><author>lgz0921</author><pubDate>Fri, 24 Jun 2022 19:02:24 +0800</pubDate><description><![CDATA[经常碰到一些场景，每个列表的第一个和最后一个可能间距不一样（意思就是说每个item统一设置一样的间距的话，会不符合自己的预期），此时我们有一个很好的做法就是自定义 ItemDecoration]]></description><category></category></item><item><title><![CDATA[安卓利用动画设置背景颜色]]></title><link>https://blog.csdn.net/lgz0921/article/details/124898370</link><guid>https://blog.csdn.net/lgz0921/article/details/124898370</guid><author>lgz0921</author><pubDate>Sat, 21 May 2022 15:06:28 +0800</pubDate><description><![CDATA[利用插值器和 ArgbEvaluator() 来做的

插值器用来做动画，ArgbEvaluator() 用来做颜色渐变

上代码：


private var valueAnimator: ValueAnimator? = null
private val evaluator by lazy {
    ArgbEvaluator()
}

/**
 * 背景色渐变动画
 */
private fun startValueAnimator(view: View) {
    valueAnimator =]]></description><category></category></item><item><title><![CDATA[812. 最大三角形面积]]></title><link>https://blog.csdn.net/lgz0921/article/details/124785968</link><guid>https://blog.csdn.net/lgz0921/article/details/124785968</guid><author>lgz0921</author><pubDate>Sun, 15 May 2022 18:54:40 +0800</pubDate><description><![CDATA[题目链接：力扣

思路：第一想法要用什么算法呢？然后看了一眼是简单题，那肯定用不到啊。看了一眼数据，最多50个点，好吧，果断O(n^3)暴力解决。枚举所有三角形的面积，每次取一下最大值即可。因为题目给出了三个顶点的坐标，所以我们直接用向量来计算三角形的面积即可。

公式：在中，，，则

上代码：


import kotlin.math.abs
import kotlin.math.max

class Solution {
    fun largestTriangleArea(points: Array]]></description><category></category></item><item><title><![CDATA[11. 盛最多水的容器]]></title><link>https://blog.csdn.net/lgz0921/article/details/124554687</link><guid>https://blog.csdn.net/lgz0921/article/details/124554687</guid><author>lgz0921</author><pubDate>Tue, 03 May 2022 14:26:24 +0800</pubDate><description><![CDATA[题目链接：力扣

思路：首先吐槽下kotlin的for循环（我感觉kotlin的for循环真的好难用），还有就是啥时候有一种语言，各种集合的遍历方式是统一的就好了（目前在我的认知里面还没有）。

这道题目是典型的双指针问题。定义两个指针 i，j ，然后开始遍历height数组即可。怎么遍历呢？首先我们需要思考下，在宽度一定的情况下，高是怎么确定的呢？很简单，因为是装水，所以高是通过矮的那边确定的。这样我们就可以做了。找到宽（j-i），找到高（左右指针指向的较矮的那边的高度），两者相乘即可。然后较矮的那边的指]]></description><category></category></item><item><title><![CDATA[908. 最小差值 I]]></title><link>https://blog.csdn.net/lgz0921/article/details/124514994</link><guid>https://blog.csdn.net/lgz0921/article/details/124514994</guid><author>lgz0921</author><pubDate>Sat, 30 Apr 2022 16:55:19 +0800</pubDate><description><![CDATA[题目链接：力扣

思路：

1. 当 maxValue - minValue &gt; 2 * k 时，说明在2K的范围内最大值与最小值的差最小能变成 maxValue - minValue - 2 * k

2. 当 maxValue - minValue &lt;= 2 * k 时，说明在2K的范围内最大值与最小值的差最小能变成0

有人可能会问，不考虑别的值吗？为什么只考虑最大值和最小值？

因为最大值与最小值的差能缩小的范围 &gt; 别的值能缩小的范围。也就是说，最大值与最小值的差能缩小到的值，别]]></description><category></category></item></channel></rss>