LeetCode6: ZigZag Conversion(Z字形变换)
LeetCode6: ZigZag Conversion(Z字形变换)LeetCode:https://leetcode-cn.com/problems/zigzag-conversion/
LeetCodeCn:https://leetcode-cn.com/problems/zigzag-conversion/
题目描述将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:
L C I R
E T O E S I I G
E D H N
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:”LCIRETOESIIGEDHN”。
示例
示例 1:
输入: s = “LEETCODEISHIRING”, numRows = 3
输出: “LCIRETOESIIGEDHN”
示例 2:
输入: s = “LEETCODEISHIRING”, numRows = 4
输出: “LDREOEIIECI ...
Leetcode5: Longest Palindromic Substring(最长回文子串)
Leetcode5: Longest Palindromic Substring(最长回文子串)LeetCode:https://leetcode.com/problems/longest-palindromic-substring/
LeetCodeCn:https://leetcode-cn.com/problems/longest-palindromic-substring/
题目描述给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例
示例 1:
输入: “babad”
输出: “bab”
注意: “aba” 也是一个有效答案。
示例 2:
输入: “cbbd”
输出: “bb”
解题方法
感觉暴力法什么的,可以不再说了
中心扩展法如果一个子串是回文,那么它本事是一个左右对称的形式,长度为n的子串,其中心有2n-1个,因为长度为偶数的子串,其中心可能在两个文字中间.接下来我们只要依次查找每个子串元素和两个元素中间作为回文子串的中心,记录其中最长的子串信息.
图解相关思路在正式开始之前,我们先看一下如何查找一个中心能匹配 ...
LeetCode3:Longest Substring Without Repeating Characters(无重复字符的最长子串)
LeetCode3:Longest Substring Without Repeating Characters(无重复字符的最长子串)LeetCode:https://leetcode.com/problems/longest-substring-without-repeating-characters/
LeetCodeCn:https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/
题目说明给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。
示例
示例 1:
输入: “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。
示例 2:
输入: “bbbbb”
输出: 1
解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。
示例 3:
输入: “pwwkew”
输出: 3
解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。 请注意,你的答案必须是 子串 的长度,”pwke” 是 ...
LeetCode2: Add two numbers(两数相加)
LeetCode-2: Add two numbers(两数相加)LeetCode:https://leetcode-cn.com/problems/add-two-numbers/
LeetCodeCn:https://leetcode-cn.com/problems/add-two-numbers/
题目说明给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)
输出:7 -> 0 -> 8
输入:(8 -> 4 -> 9) + (5 -> 6 -> 3)
输出:3 -> 1 -> 3 -> 1
解题方法初等数学简单的数学相加即可,不过需要处理几个特殊情况,当两个链表长度不同时,短链表下一位数据用0填充
在两个链接相加的过程中, ...
LeetCode 1: Two sum(两数之和)
LeetCode-1: Two sum(两数之和)
日常新坑,沉迷学习,无法自拔
自己实现的代码,在可解读的前提下尽力优化.
LeetCode:https://leetcode.com/problems/two-sum/
LeetCodeCn:https://leetcode-cn.com/problems/two-sum/submissions/
题目说明给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]
解题方法暴力枚举遍历nums中的每个元素x,查找是否存在target-x的元素
哈希表辅助(一次遍历)简单来说就是在遍历的时候将遍历过的x存入HashMap中,已x的值为key,x所在的位置为vaue.在遍历新的元素的时 ...
七牛图床图片转移
七牛图床图片转移
离职加四处浪的的我终于又开始工作了,还是浪的开心啊
前两天整理博客的时候发现,存在七牛图床的图片…基本都挂了,想到了前段时间一直接受的七牛提示测试域名到期的事情…当我开始上班整理的时候发现,都挂了…辗转几天,把图片都转移到阿里OSS中.(关于七牛封测试域名的事情,一言难尽,用别人提供的方便,也别给别人带来麻烦不是.)
如何转移转移的主要问题是当测试域名过期后,当前空间下的图片无法访问也无法预览.如果又一个备案过的域名倒是很容易解决,不过一般谁闲着没事去做公安的域名备案不是.只能通过七牛提供的qshell进行备份和转移.
转移步骤
新建储存空间
在七牛下创建一个新的储存空间,命名为backup(当然什么名字都好)2. 操作qshell
下载qshell(这个是七牛提供的shell工具)
12345678# AccessKey/SecretKey 需要在个人中心->密钥管理中查看,Name为当前需要备份的空间(我也不知道提供这个是个什么逻辑)./qshell account [<AccessKey> <SecretKey&g ...
Android自定义view之emoji键盘
主要还是最近做了一个emoji键盘的需求,感觉可以简单封装一下顺便整理下emoji相关的知识
Android中的 emoji有关Android中emoji的文章有很多了,我就不简单罗列相关内容了,在这记录一下开发过程中遇到的一些坑…
首先是TextView首次绘制中emoji的颜色会偏浅,官方的demo中依然存在这种问题…
(详情可以参考https://github.com/googlesamples/android-EmojiCompat) ,上图中可以看到其中两个Textview的emoji颜色偏浅,但是EditView中就不会出现这个问题…
解决方法的话暂时有两种,一是针对不能引入EmojiCompat的项目,可以考虑针对textview多次绘制,但是对此Textview设置background的时候会失效… 二是可以针对可以引入EmojiCompat的项目,但是简单的直接设置EmojiCompat仍然不好用…通过自定义View即demo中的Custom TextView即刻解决这个问题
原生emoji的适配问题
不同版本的系统中适配的em ...
Android自定义View之星球运动
Android自定义View 星球运动
在dribbble闲逛的时候发现的一个有意思的星球运动的动画,刚好最近时间尚可,就简单实现了一下中间运动的部分,又是因为时间的原因,开头位移的部分没有完成.
这是在dribbble中发现的动画
这是我自己实现的效果… 总觉得我这个星球有点胖… 因为胖所以转的慢么这是.速度等细节还有优化的余地
设计过程老办法,先分解动画的构成.整个动画可以看做是一个自旋的星球从右上角由小变大的移动到屏幕的中央的.
星球的位移及缩放不说(其实是最近有需求,暂时没时间完善),主要完善了星球的旋转及尾部的处理.
最底层是背景的星星闪烁,每次在星球一定范围内随机出现,并缩放就好
最开始设计尾部效果的时候,是在没列中设计了两端线.再不断的运行及移动.但是实现起来很乱.最后采用了先绘制所有尾部展示的内容,然后在用和背景一样的颜色部分遮盖并移动此部分形成视觉上的效果的方法.(也可以设置PorterDuff模式来展示).设计过程中的效果如下
星球的设计,星球的本身使用简单的遮盖和贝塞尔曲线就能完成一个较为满意的星球背景.
重点是星球地表的设计以及星球自转下的地表样式 ...
Android 自定义贝塞尔曲线工具
Android 自定义贝塞尔曲线工具
之前在学习贝塞尔曲线的相关内容,在查找相关资料的时候发现网上的资料重复的太多了,而且因为android的canvas只提供了quadTo,cubicTo两种方法来绘制二阶和三阶的贝塞尔曲线.在线的贝塞尔曲线绘制网站也很少,(在这提供一个在线贝塞尔曲线的网站,根据网上的资料整理的),而在android手机中缺没有类似的工具,在设计或者使用贝塞尔曲线的时候增加了很多的工作,刚好在学习相关的知识,就做了一个较为完善的android端的贝塞尔曲线工具.
贝塞尔曲线基本的贝塞尔曲线的知识就不多说了,有兴趣的可以参考下我之后会完成的贝塞尔曲线的记录
其实理解贝塞尔曲线十分容易,可以将其理解为一种递归的形式.根据比例系数计算当前线段中的点,得到所有点之后再按照顺序连接线段,重复以上步骤,直至只剩下一个点,此点就在贝塞尔曲线中,计算各个比例系数下的点,这些点的集合就是贝塞尔曲线.
基本功能绘制常见的贝塞尔曲线可以绘制常见的二阶,三阶贝塞尔曲线
绘制多阶的贝塞尔曲线可以绘制不常见的贝塞尔曲线
开启/关闭辅助线可以开启不同颜色层级的辅助线段
绘制 ...
Android自定义View之元素按钮
#Android自定义View之元素按钮
之前在dribbble看到的三个元素的按钮,参考了设计的创意,添加了自己定义的动画效果来实现.先看效果
分别是水火电三个元素的按钮实现.其中电的实现最简单,水的次之,火的实际还并不满意,没有火焰扰动的感觉,尝试过几次但是效果都不理想,最后只保留了自下向上的扇形遮罩.如果有好的效果再优化实现.
闪电篇设计过程通过闪电的位置将整体划分成七个部分(七个部分的主要原因是最初设计了一个中部放大的透镜效果,但是没能实现),从右上角进入,在中心点附近运动,直到停在中心点.闪电本身可以看做一个中心对称的图形,整理就简化成了现将canvas旋转一定角度,然后绘制中心对称的闪电形状,最后在x轴上运动就可以了.
黄线是旋转后的坐标,可以看出简化后实现起来很简单.
代码实现
背景部分
123456789101112131415161718//绘制闪电背景private fun drawBaseButton(canvas: Canvas , index: Float) { //设置画笔 val paint = Paint() ...