登录社区云,与社区用户共同成长
邀请您加入社区
定义。
[TOC]([仓颉Cangjie刷题模板] 单调队列(含数组版双端队列实现) )
【代码】([LeetCode仓颉解题报告] 661. 图片平滑器。
【代码】1547. 切棍子的最小成本-cangjie。
HarmonyOS的目标是覆盖“1+8+N”全场景终端设备,这里“1”代表的是手机,“8”代表PC、平板、手表、智慧屏、AI音响、耳机、AR/VR眼镜、车机,“N”代表其它物联网(Internet of Things,IoT)生态产品。第1、4步骤需要做的工作的比较固定,基本都是一次性工作,第2、3步骤的工作往往是大量的,一个应用从开始开发到最终上线中间一般需要进行大量的分析、设计、编码、测试等工
如果是顺序不敏感的ans,就可以直接在 0 位置插入 String(arr),但是如果是对顺序敏感的arr,则需要插入到队尾,即arr.size,注意不是size-1,相当于end()迭代器的位置。则在后续修改tmparr的时候,因为是浅拷贝(引用拷贝),因此会直接修改到arr,导致程序出错。var tmparr = ArrayList(arr)结果。2、ArrayList 的 insert 位置
这个 MinStack 实现非常有效,能够在常数时间内完成所需的操作,非常适合用于需要频繁获取最小值的场景。每次入栈的时候存储当前最小值即可。
【代码】3216、交换后字典序最小的字符串-cangjie。
这个程序的核心思路是利用递归逐层构建字母组合,直到遍历完所有数字的可能字母。通过使用回溯方法(DFS),实现了对于所有可行组合的探索和累积。指向的是同一个引用,导致所有的array都变成了最后一次修改的结果。2、试了下append©,比insert(size, c)好用多了。目前是放弃了array,已老实用ArrayList。(其中 n 是输入字符串的长度)(用于递归栈和存储结果)倒是没报错,但是
【代码】16、最接近的三数之和-cangjie。
3、判断sum,根据sum和0的差值调整left 和 right。5、remove的时候记得倒序,不然把前面的删了后面顺序就变了。3、sortBy需要lmbda函数,没研究直接sort。5、需要去重,去重的时候记得倒序遍历,不然迭代器溢出。1、先进行sort,将数组按序排列。4、三元组需要顺序相同才可以直接。,所以前面需要按序insert。2、ArrayList需要。2、遍历三个数中的mid。4、
2、遍历,如果 onlyNum 为 true,继续处理数字:如果当前字符是数字,将其转为相应的整数并累加到 ans,并每次乘以 10 来构建完整数字,返回前检查是否超出 Int32 的范围。1、创建字符数组,定义结果变量 ans 为 0,符号变量 符号 初始化为 1(表示正数),以及一个标志 onlyNum 用于指示是否已经读取到数字。1、string不能slice,必须转arr。
维护两个index,从两边缩小到中间,谁矮谁被缩小,每次缩小重新计算ans。
【代码】12、整数转罗马数字-cangjie。
仓颉类型极值是以TYPE.Max或者TYPE.Min来表示的。:循环内部的操作,如取模和除法,都是常数时间操作。,因此循环的时间复杂度为。,这些都是常数空间的占用。:代码中使用的变量包括。
如果想用next来判断,不知道怎么写,说是p和q的类型是Option,所以不匹配,然后if仅接受bool。时间复杂度 O(max(len(l1), len(l2)))但是如果我直接写while(p <- None)会报错。则会报错,还是那句话,p和q是option,所以需要用。也看不懂,所以采用类似线程的while(1)写法了。空间复杂度 O(1)(不算结果空间)1、while循环不知道怎么写。2
1、仓颉类型强制赋值会报错,如果不想每个赋值都。2、数组初始化的时候,一开始还以为直接可以。开了个toRuneArray的数组。,每个字符只遍历一次。结果没想到真的是要写。
遍历每个字符,向外推开,记录最长的回文串的开始位置和长度,因为仅需一种合理答案即可,因此直接记录start和len。家人们谁懂啊,仓颉居然不支持string直接slice,需要转成array来slice,狠狠的无语了。
其中 m 和 n 分别是数组 nums1和 nums2 的长度。,每一轮循环可以将查找范围减少一半,因此时间复杂度是。仓颉在内存上比cpp少很多。重写了下官方题解的代码。逻辑题,没啥语言上的坑。
因此,右指针可能需要在每次外层循环中几乎遍历整条链(即从当前左右指针的相对位置到末尾)。向右遍历,每个位置最多只会被访问一次,因此在整个执行过程中,所有的字符总共也只会被访问一次,因此内层循环的总体时间复杂度也是。在这个特殊情况下,即每个字符都是重复的,内外层循环可能会导致重复的遍历,因此最坏的时间复杂度可表示为。结合以上分析,外层和内层循环虽然各自是线性的,但在平均情况下没有重复的情况下,整体复
时间O(n^2),空间O(1)
蜂信物联FastBee平台https://gitee.com/beecue/fastbee阿里资料开源项目https://gitee.com/vip204888百度低代码前端框架https://gitee.com/baidu/amisOpenHarmony开源项目https://gitcode.com/openharmony仓颉编程语言开放项目https://gitcode.com/Cangjie
背景:c嵌入式工程师,碎片时间通过刷题学习仓颉自用记录贴,菜勿喷。
文中难免有些错误,且仓颉正在快速发展中,可能过段时间有些东西就不对了。(个人测试下来该三方比官方的在线 ide 好用,但是目前编译器的版本比较落后):笔者并非专门研究仓颉,本文中仅是对于使用仓颉在力扣刷题的一些基础总结。且目前力扣还未所有题目都支持仓颉,当然应该会慢慢补全的,大家等等期待吧。因为都是典中典的题目,就不放题意和思路了。充斥着仓颉的各个地方,因为可以使用。这里抛出仓颉一个非常重要的内容
仓颉在力扣上已经能用了,试了下速度,很快啊。> 于是打算开个坑存一下仓颉模板。> 本文记录学习仓颉过程中遇到的坑和吐槽点,以及优秀点安全声明1:本人是Python吹,以下大多与Python对比安全声明2:优先以敲算法代码(刷题)的角度开喷,工程角度的后续再补(也可能不补另外,本吐槽纯主观,基于个人喜好func add(a!: Int64, b!
链接:https://leetcode-cn.com/problems/letter-tile-possibilities/描述:示例:代码:class Solution {public:void DFS(string& tiles,string ret,vector<int>& usedIdx,unordered_set<string>& rets
//另一种想法class Solution {public:vector<vector<int>> subsets(vector<int>& nums) {vector<vector<int>> res;vector<int> out;so...
Given a set of distinct integers, S, return all possible subsets.Note:Elements in a subset must be in non-descending order.The solution set must not contain duplicate subsets.For exa
Subsets原题链接Subsets给定一个数组序列,找出所有子序列深度优先扫一遍:)class Solution {public:vector<vector<int>> subsets(vector<int>& nums) {vector<vector<int>> res;vector<int> cur;dfs(0, nums, c
2021-12-15: 路径总和 III。给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。力扣437。答案2021-12-15:时间紧,具体见代码。代码用golang编写。代码如下:package mainimp
对于这题我的解法:最长长度不会超过出现不重复的字符数n,因此以这个数为开始,找子串长度为n。如果n没有找到,则n-=1,重新找。需要判断子串是不重复的字符。class Solution {public int lengthOfLongestSubstring(String s) {int size = getSize(s);System.out.println();for (int i = 0;
2021SC@SDUSC本文将就支配和支配边界的算法进行一个简要的分析。直接支配节点的算法:void Dominance::ComputeDominance() {doms.at(commonEntryBB.GetBBId().idx) = &commonEntryBB;bool changed = false;do {changed = false;for (size_t i = 1;