ARTS打卡第五周

Transformer入门(一)——结构 Transformer入门介绍篇,分别介绍了Transformer的总体结构与每个模块的实现原理 阅读详情

Algorithm:Leetcode 6. Z 字形变换

题目描述:
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。

比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下:

L   C   I   R
E T O E S I I G
E   D   H   N

之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。

请你实现这个将字符串进行指定行数变换的函数:

string convert(string s, int numRows);

示例 1:

输入: s = "LEETCODEISHIRING", numRows = 3
输出: "LCIRETOESIIGEDHN"

示例 2:

输入: s = "LEETCODEISHIRING", numRows = 4
输出: "LDREOEIIECIHNTSG"

解释:

L     D     R
E   O E   I I
E C   I H   N
T     S     G

思路一:
拿到题目的首先思路就是用一个二维矩阵来存储Z字形变换的结果。用二维矩阵需要知道三个要素:行数、列数和每个字母在矩阵中的位置。行数是输入的,列数需要根据字符串的长度来计算,通过移动行和列的索引来确定字母在矩阵中的位置。

public String convert(String s, int numRows) {
        if(numRows == 0) {
            return null;
        }
        if(numRows == 1) {
            return s;
        }

        // 计算列数
        int tempLen = 0;
        int numCols=0;
        while(tempLen < s.length()) {
            if(numCols % (numRows-1) == 0) {
                tempLen += numRows;
            } else {
                tempLen += 1;
            }
            numCols++;
        }

        char[][] ans = new char[numRows][numCols];
        boolean down = false;
        int row=0;
        int col=0;
        // 遍历字符串
        for(int j=0; j<s.length(); j++) {
            System.out.println("row:"+ row + " col:" + col);
            ans[row][col] = s.charAt(j);
            // 改变方向
            if(row == 0 || row == numRows-1) {
                down = !down;
            }
            if(down) {
                row++;
            } else {
                row--;
                col++;
            }
        }

        StringBuilder sb = new StringBuilder();
        for(row=0; row<numRows; row++) {
            for(col=0; col<numCols; col++) {
                if(ans[row][col] != 0) {
                    sb.append(ans[row][col]);
                }
            }
        }
        return sb.toString();
    }

时间复杂度:遍历字符串是O(n),遍历二维数组是O(numRows*numCols) > O(n)。

思路二:
由于思路一中二维矩阵存储中有很多单元是无用的,输出结果前还需要将其过滤掉,增加了时间复杂度。我们可以将二维矩阵中的无效单元压缩掉。虽然结果看上去是Z字形,但实际我们不需要按Z字形输出,所以没必要按Z字形存储,可以将列存储得更紧凑些。

public String convert(String s, int numRows) {
        if(numRows == 0) {
            return null;
        }
        if(numRows == 1) {
            return s;
        }
        numRows = Math.min(s.length(), numRows);
        StringBuilder[] ans = new StringBuilder[numRows];
        for(int i=0; i<numRows; i++) {
            ans[i] = new StringBuilder();
        }

        boolean down = false;
        int row=0;
        // 遍历字符串
        for(int j=0; j<s.length(); j++) {
            // 改变方向
            if(row == 0 || row == numRows-1) {
                down = !down;
            }
            ans[row].append(s.charAt(j));
            row += down ? 1 : -1;
        }

        StringBuilder sb = new StringBuilder();
        for(row=0; row<numRows; row++) {
            sb.append(ans[row]);
        }
        return sb.toString();
    }

时间复杂度:需要遍历一遍字符串,所以是O(n)
空间复杂度:需要2n个额外存储空间,所以是O(n)

Review: The Huawei Ban — How the Trade War is Hurting Tech

美国对华为的禁令会造成什么影响?对华为来说,硬件不是太大的问题,但是想替换掉Android系统,还是很难的。制作一个新的系统,对华为来说不是不可能,事实上,华为已经有了自己的操作系统。最大的挑战是建立一个生态系统。
坦白地说,并没有证据证明华为的手机相比其他Android手机有更大的安全问题。这次禁令明显就是美中之间贸易战的结果。

Ultimately, we’re trading innovation and technological advancement for national pride, an economic tug-of-war, and intellectual property discrepancies.
最终,我们正在用创新和技术进步来换取民族自豪感、(赢得)经济拔河(的胜利)和(弥补)知识产权的差异

尽管华为在美国的市场份额不大,但仍然和美国企业形成了竞争关系。从技术角度来说,这种竞争促进了前沿技术的进步(面部识别、屏幕下指纹识别、弹出式相机和折叠手机等)。如果没有这种竞争关系,企业将不会再以如此快的频率更新自己的产品,垄断现象会加剧,科技进步将会停止。竞争是工业创新的关键驱动力。

With better technology, humanity blossoms
有了更好的技术,人类才会繁荣

Under what conditions, then, should we be okay with sacrificing this development? How much do we value technology’s ability to improve the well-being of individuals and societies?
那么,在什么条件下,我么可以牺牲这种发展呢?我们在多大程度上重视技术改善个人和社会福祉的能力呢? PS:有道翻译的太好了!!!

If the blacklist is implemented at much larger scale, to what extent can such political actions obstruct the growth of tech and, in effect, the enhancement of quality of life?
如果黑名单被大规模实施,这种政治行为会在多大程度上阻碍科技的发展,并在实质上阻碍生活质量的提高?

Keeping this question in mind when considering global affairs is imperative, since ultimately, we are the people who are affected.

Tip: Shell脚本中如何获取当前目录?

#!/bin/bash
cur_dir=$(dirname $0)
cd $cur_dir
dir_path=$(pwd)

说明:
$0 是Shell中的特殊变量,表示当前脚本的文件名
$(dirname $0) 获取当前脚本所在的目录,可能是绝对路径,也可能是相对路径
cd 命令进入脚本所在目录
$(pwd) 获取当前目录的绝对路径

上述脚本可以简写成

#!/bin/bash
dir_path=$(cd `dirname $0`; pwd)

附录:Shell中的特殊变量

$$ 
Shell本身的PID(ProcessID) 
$! 
Shell最后运行的后台Process的PID 
$? 
最后运行的命令的结束代码(返回值) 
$- 
使用Set命令设定的Flag一览 
$* 
所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。 
$@ 
所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。 
$# 
添加到Shell的参数个数 
$0 
Shell本身的文件名 
$1~$n 
添加到Shell的各参数值。$1是第1参数、$2是第2参数…。 

Share: 读硕士和博士的短短几年真正学到的是什么?

Intellectual Skills 智力

Communication Skills 沟通能力

Personality Characteristics 人格

Habits Of Work 工作习惯

Mechanical Skills 动手能力

SAP ABAP 缓冲同步揭秘——从 DDLOG 表到 RSDBBUF3 的完整实践指南 DDLOG 看似一张不起眼的系统表,却承担着 SAP 多实例环境下的数据一致性重任。通过掌握其字段意义、解析方法及周边监控工具,你可以在性能与一致性之间找到最佳平衡;通过精细化的参数管理与主动刷新策略,更能在关键业务场景中确保“数据永远是最新的”。愿本文能成为你日常排障与架构决策的参考手册。 阅读详情

相关推荐

用AI免费制作30分钟电影:完整工作流与实操解析

AI视频生成技术正大幅降低影视创作门槛,但真正制作一部完整电影并非一键生成,而是涉及剧本、分镜、画面、配音、剪辑的复杂流水线。理解其基本原理,是将文本转化为连续视觉叙事的关键。对于创作者而言,掌握角色一致性控制、素材批量管理、免费额度合理分配等技术价值,能有效避免生成结果崩坏与资源浪费。该能力可广泛应用于短视频创作、独立电影预演、教学演示等场景。本文以30分钟AI电影制作为例,拆解从工具选择到成片输出的全流程,重点分析免费方案下的时间与积分成本,以及最容易翻车的环节,并给出基于实践验证的排查与优化策略。

weixin_29056865的博客 328

ARTS第五周打卡

ARTS打卡是陈皓(网名左耳朵耗子)于2019年在专栏读者发起的打卡挑战,累计吸引4000+人参与,产出了很多优质的内容。2023年8月15日打卡重启,目的是为了聚集一波热爱技术的人,延续好奇、探索、实践、分享的精神。

小陈的博客 552

高分7(GF7)卫星数据制作平原地区DSM/DEM(三)——可信度分割

李国春(接上)

副组长的博客 1714

【ARTS】打卡第五周

每周完成一个ARTS 每周至少做一个 leetcode 的算法题 阅读并点评至少一篇英文技术文章 学习至少一个技术技巧 分享一篇有观点和思考的技术文章。 (也就是 Algorithm、Review、Tip、Share 简称ARTS) Algorithm 438. 找到字符串中所有字母异位词 给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子...

weixin_30302609的博客 114

从IR Drop到EM分析:数字IC电源规划中那些没人明说的细节(以MTCMOS配置为例)

本文深入探讨数字IC后端设计中电源规划的关键细节,特别关注MTCMOS配置、电源网络电阻最小化和level shifter供电等实战技巧。通过分析IR Drop和EM问题,提供优化floorplan和powerplan的具体策略,帮助工程师避免常见陷阱,提升芯片设计的稳定性和可靠性。

q9w8e7r6t5的博客 511

AI编码规则:从提示工程到自动化,提升大模型生成代码质量

在软件工程领域,代码质量是保障软件可维护性、安全性和团队协作效率的核心。其背后遵循着从基础语法规范到架构设计原则的一系列工程实践。随着大语言模型(LLM)在代码生成任务中的广泛应用,如何确保AI生成的代码符合这些工程标准,成为一个关键的技术挑战。这涉及到将人类工程师积累的最佳实践,转化为机器可理解、可执行的明确约束。通过系统化的**编码规则**定义与集成,例如构建涵盖安全、风格、架构的多层次规则集,并将其融入**提示工程**或自动化工作流,可以显著引导AI产出更健壮、规范的代码。这种方法的价值在于,它能将模

weixin_42525189的博客 642

ARTS 打卡第五周

ARTS 打卡week05 每周完成一个 ARTS: Algorithm: 每周至少做一个 LeetCode 的算法题 Review: 阅读并点评至少一篇英文技术文章 Tips: 学习至少一个技术技巧 Share: 分享一篇有观点和思考的技术文章 Algorithm 4. 寻找两个正序数组的中位数 给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。 请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 num

canhaimingyue的博客 344

【YOLO系列】YOLOv5超详细解读(源码详解+入门实践+改进)

一文带你详细了解YOLOv5(含YOLO系列论文讲解+源码详解+入门实践+算法改进)

路人贾的博客 25万+

ARTS学习打卡--第五周

Leetcode: 1160. Find Words That Can Be Formed by Characters You are given an array of strings words and a string chars. A string is good if it can be formed by characters from chars (each charac...

qq_36712997的博客 652

uniapp [全端兼容] - 详细实现下拉筛选菜单功能组件,下拉式筛选菜单效果,类似电商美团点击筛选项底部弹出列表点击选择后自动收起(详细示例代码,全端兼容小程序、安卓苹果app、h5网页、nvue

uni-app,vue2,vue3,向下弹出菜单包含筛选功能,日期筛选,下拉框选择器,下拉多条件筛选,下拉式筛选菜单,uniApp如何实现条件下拉筛选,Uniapp官方条件筛选组件,下拉框式条件筛选插件组件,最好用的插件组件,多端兼容,下拉菜单筛选,过滤筛选列表,下拉筛选栏,多列联动的条件筛选,下拉菜单地区和筛选,微信小程序,支付宝小程序,h5网页,移动端网站,安卓app,苹果app,nvue,uniapp所有平台兼容,下拉菜单筛选,下拉式条件筛选,下拉列表,点击排序,级联筛选,uniapp实现下拉筛选

🏆 前端领域优质创作者 1万+

基于STM32L4XX、HAL库的ICP-10111压力传感器驱动程序设计

define ICP10111_CMD_MEAS_ULN 0x7866 // 超低噪声模式。#define ICP10111_CMD_MEAS_LP 0x609C // 低功耗模式。#define ICP10111_CMD_MEAS_LN 0x70DF // 低噪声模式。#define ICP10111_CMD_MEAS_N 0x6825 // 正常模式。ICP10111_MODE_LN, // 低噪声。// 等待测量完成(根据模式不同等待时间不同)

zhusl6688的博客 417

ARTS挑战打卡第五周

“带着问题/目的去练习,事半功倍”Algorithm-一周至少一道算法题Review-阅读并点评至少一篇英文技术文章Tip-学习至少一个技术技巧,总结和归纳在日常工作中所遇到的知识点S...

yipiankongbai的专栏 244

华为OD机试2025C卷 - CPU调度策略 (C++ & Python & JAVA & JS & GO)

华为OD机试 2025C卷 CPU调度策略,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解

qq_45776114的博客 1297

ARTS打卡计划第五周

Algorithms: https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/ 采用了map的存储,然后移动窗口方式解决此问题,当然看到有个动态规划,一直很难理解。 Review: https://www.infoq.cn/article/rAJiubRpi9xSl_LEhI2N...

weixin_34024034的博客 147

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

ARTS打卡第五周(2021.2.6)

Algorithm 题目描述 输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的) 代码: /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Solution { public ListNode Fi

weixin_41122292的博客 255

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Dimple在左耳听风ARTS打卡(第五期)

所谓ARTS:每周至少做一个LeetCode的算法题;阅读并点评至少一篇英文技术文章;学习至少一个技术技巧;分享一篇有观点和思考的技术文章。(也就是Algorithm、R...

程序员小跃的专栏 211

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ARTS 挑战记录目录

在知乎看到一个有意思的东西,就是ARTS挑战,具体含义如下 每周完成一个ARTS: 每周至少做一个 leetcode 的算法题、阅读并点评至少一篇英文技术文章、学习至少一个技术技巧、分享一篇有观点和思考的技术文章。(也就是 Algorithm、Review、Tip、Share 简称ARTS) 感觉自己原来看的东西确实很多都忘了,时间就匆匆过去了,几年大学时光学的东西也忘的差不多了,本来我的职业规划里面就是不断巩固、拓展自己的知识,形成知识闭环,但是总是没有很好的实施。现在2021年2月28日起,我也向自

超级码力 413

ARTS入门

原由 第一次在网上写东西记录学习的过程,不知道能坚持多久。之前没怎么看过算法,英文资料偶尔看datasheet,感觉是一穷二白的开始啊。 前几天在caoz的公众号上看到了ARTS的推荐,发现是陈皓的专栏,很久之前在网上看到过陈皓大神的文章,于是下了极客时间的APP,了 解了下,然后拼团加入,接着又加了群,ARTS 6号小组。 在优快云上记录,在知乎上打卡。 ARTS是4个单词的缩写。 ...

kunzitian1983的博客 346

技术没有捷径,敢不敢坚持学习一百天

但wo'm一不小心,2019已过半,技术人的灵魂拷问来了:年初定的目标计划完成的怎么样了?升职了吗?加薪了吗?从去年年底到今年,美团、京东等知名互联网公司频频爆出裁员降薪...

caoz的梦呓 997

架构学习,贵在坚持,有些人也“跪在”坚持

想要变得牛逼,一个方法是尽可能跟大牛多交流学习,「左耳朵耗子」,陈皓,这位大牛大家应该都认识吧。陈皓,架构专家,骨灰级程序员,MegaEase创始人,有着20年以上的研发...

shenjian58的博客 406

刻意练习100天,进阶全栈程序员

我一直觉得,想要变得牛逼,一个方法是尽可能跟有思想的大牛多交流学习,有思想的大牛很多,比如「左耳朵耗子」,陈皓,人称耗子叔,大家应该都认识吧。他是资深技术专家,骨灰级程序...

Python之禅的专栏 460

关于陈皓,我的一些感受

懂得“投资”的人,通常来说,他们更多的关注的是未来和长远的成长,而不是当下的KPI、奖金和晋升。所以我们还是要多注意身体,不要熬夜,坚持运动,饮食有度,毕竟身体是革命的本钱,是好几个0前面的1,没有1,后面再多的0都是徒然。- 如果你想更好的把握时代,提升自己,你需要知道这个时代的趋势是什么,需要什么样的人,这些人需要什么样的能力,这些能力是怎么获得的,投入到基础知识的学习就像“基建”一样,如果基础不好,不能长高,学习能力也是需要适应这个快速时代的重要的基础能力,没有好的学习能力,很快就会掉队被淘汰。

dstweihao.cn 1131

2020年Android开发年终总结之如何挤进一线大厂?(1),androidapp开发工具

坚持写文章 坚持了ARTS打卡 坚持了每周的总结与下周规划 2021的展望 =============================== 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》 开源分享完整内容戳这里 ========================================= 做一个100以上star的Github开源项目 读几本计算机原理,计算机网络,数据结构等基础领域的书 掌握flutter的使用与相关原理 继续..

m0_64314318的博客 386

谁是左耳朵耗子?

小灰一直觉得,想要变得牛逼,要尽可能跟有思想的大牛们多学习。前一段时间,小灰为了聆听国际软件开发巨匠Martin Fowler的分享,就特意从北京飞到了深圳。除了Mart...

程序员小灰的博客 7470

2020年Android开发年终总结之如何挤进一线大厂?

编码、学习、或者是面试,没有一次性做到位的决心。因此如果想面试跳槽,像掉帧监控,函数插装,慢函数检测,ANR 监控,启动监控,都需要对 Framework 有比较深入的了解,才能知道怎么去做监控,利用什么机制去监控,函数插桩插到哪里,反射调用该反射哪个类哪个方法哪个属性……一线大厂一般有很多部门负责不同的项目,里面不乏知名大学毕业,技术大牛,往往在某一领域已经做到极致,有专门的团队负责某一功能点(性能优化、性能监控、中间件工具组件等),能投入人力物力去做好项目,并且薪酬福利可观,只是工作强度会很大。

aclncf1313的博客 645
上一篇: Docker CMD命令执行脚本后容器退出的问题
下一篇: ARTS打卡第六周
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值