Lintcode Ladder2 总结

1. String

[Lintcode Ladder2] String

13.Implement strStr()

KMP算法

171.Anagrams

对之前代码对改进:

item_ = str(sorted(item))

注意要转换成string,因为list不能作为dictionary对hash表的key。

79. Longest Common Substring

再看一次还是没有思路,·
自己之前是用暴力做的。
但是现在看起来是一个典型的DP问题。
但是没想太好状态是怎么转变的-> 很简单。自己想多了。

78. Longest Common Prefix

可以用二分。但是蛮复杂的感觉不是很有必要。

2. Integer Array

78. Longest Common Prefix 游标x2/交换

记得python可以直接pop(index)
还有一种思路,是类似于快排的方法。
将相等的数置换到队尾,因为最后inplace的结果,只看前面

138. Subarray Sum 前缀和数组

想用list的index,但是好像不太好用的样子。

100. Remove Duplicates from Sorted Array 游标/交换

直接用list.pop(index)
其他人的做法,有一个游标,用来找到下一个和当前位置不等的数,并将这个数与当前位置的数进行交换

64. Merge Sorted Array 游标

队尾两个游标,从A, B中选取较大的一次填充到队尾

56. Two Sum hash表

50. Product of Array Exclude Itself 前缀积和后缀积,相乘

189. First Missing Positive 交换

将索引和数字匹配

59. 3Sum Closest 游标

固定最左边,left起始位置在固定点的相邻左侧,right在最右边
固定点从左到右移动。

15.3Sum

类似于上一题

3. Binary Search

141. Sqrt(x)

60. Search Insert Position

28. Search a 2D Matrix

把二维数组展开,用二分法,然后重写换算成二维数组的形式。

14. First Position of Target

159. Find Minimum in Rotated Sorted Array

很简单,只要找到第一个不是递增的就是了。

75. Find Peak Element

注意边界情况(然而边界情况被题目排出了,就比较好算)

74. First Bad Version

也是用二分法来找,但是我一开始还费劲吧啦地讨论前一个是false,后一个是true才是满足条件。后来看发现只需要是false右移,是true左移,最后l==r的时候,这个数就是结果。

62. Search in Rotated Sorted Array

分情况讨论,

61. Search for a Range

分两个二分法查找

183. Wood Cut

选取最大的木头,二分查找所有可能的情况,得到第一个可以的

4. Math & Bit Manipulation

181. Flip Bits 负数

负数处理方法:

ff = pow(2, 32)
a_r = (a+ff)%ff

142. O(1) Check Power of 2 **

这个做法也太巧妙了吧!利用了2的幂在二进制条件下的特殊形式。
由此可以推广到n进制(?

2. Trailing Zeros

只需要考虑5的情况,每个5都能产生一位0

179. Update Bits

163. Unique Binary Search Trees

递归

140. Fast Power

只需要考虑不整整除的部分,在每一次幂运算后的变化

180. Binary Representation

这道题要注意小数运算的问题
字符转化成浮点数

5. Greedy

82. Single Number 利用了异或两两抵消

所有元素与0异或,最后的结果是缺少的元素

46. Majority Element

O(nlogn)的话,可以先sort,再求二分之一
如果是O(n)的情况,可以利用主元素的性质,遍历每个元素,存储第一个元素,并与后面的元素比较,如果该元素等于存储的元素,count+1,否则减1,并将存储的元素替换为当前元素。最终留下的元素肯定是主元素。

187. Gas Station

因为是循环,所以可以计算从第一个开始,到最后一个的情况,然后找一个最低的位置,以他后一个开始。因为他们的相对情况是不变的。

184. Largest Number

182. Delete Digits

数学关系

  1. 每次操作都争取找最小的数
  2. 对每次找数时,应该删掉第一个比后面的数大的,因为前一位有进制的加成,肯定比后面的好。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基恩士(Kinco)的ladder builder是一款用于PLC(可编程逻辑控制器)编程的软件工具。PLC是一种用于自动化控制的硬件设备,常用于工业领域中的各种控制系统。 ladder builder是基恩士公司为了方便用户进行PLC编程开发的工具软件。它提供了直观、简单的梯形图编程界面,使用户能够以图形化的方式编写和编辑PLC程序。通过该软件,用户可以使用梯形图的元素(如继电器、计数器、定时器等)来构建逻辑控制程序,实现对机器、设备或生产线的自动化控制。 使用ladder builder进行PLC编程的优点是它的易学性和易用性。用户无需具备高级的编程知识,只需掌握梯形图的基本原理即可。软件提供了丰富的模块和函数库,用户可以根据实际需要选择和配置,以满足各种控制需求。此外,ladder builder还支持多种编程语言,如ST(结构化文本)、FBD(功能块图)、SFC(顺序功能图)等,使得用户可以根据自己的喜好和需求选择适合自己的编程方式。 另外,ladder builder还具有调试和仿真功能,用户可以在软件中进行程序的调试和测试,以确保程序的正确性和可靠性。通过仿真功能,用户可以在实际硬件设备之前对程序进行模拟,以检查程序的逻辑是否正确,避免出现错误和故障。这大大节省了用户的时间和成本。 基恩士的ladder builder软件是一款功能强大、易于使用的PLC编程工具,它提供了丰富的功能和模块,使用户能够以图形化的方式轻松编写和编辑PLC程序,实现对机器和设备的自动化控制。无论是初学者还是经验丰富的工程师,都可以通过ladder builder来提高PLC编程的效率和质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值