摘要: 1,常规的想法是用两个指针,1个指向要判断的元素,另一个找到大于此元素的元素下标 2,但这个算法的时间复制度是O(n^2) 3,我们可以使用栈来解决此类问题 4,遍历元素,当元素小于栈顶元素时,元素进栈; 5,当元素大于栈顶元素时,则计算栈顶元素与当前元素的距离 6,如此时间复制度为O(n) imp 阅读全文
posted @ 2020-04-19 23:00 冬马党 阅读(164) 评论(0) 推荐(0)
摘要: 这里利用了map集合,思路是将第一个字符串的字母都放入map中 然后遍历第二个字符串,试图将所有字母从map中取出 最后判断map是否为空即可 import java.util.*; public class Client { public static void main(String[] arg 阅读全文
posted @ 2020-04-19 22:20 冬马党 阅读(606) 评论(0) 推荐(0)
摘要: 这是栈的一个经典利用场景,除此外,栈一般还利用在方法栈和递归当中 import java.util.*; public class Client { public static void main(String[] args) { String str = "()([])[]"; boolean v 阅读全文
posted @ 2020-04-19 15:16 冬马党 阅读(278) 评论(0) 推荐(0)
摘要: 利用快慢指针来实现,快指针先执行头节点的第n个节点,慢指针指向头节点 然后快慢指针一起移动,当快指针指向尾节点时,慢指针的下一个节点就是要移除的节点 代码实现: public class Client { public static void main(String[] args) { ListNo 阅读全文
posted @ 2020-04-19 14:56 冬马党 阅读(454) 评论(0) 推荐(0)
摘要: public class Client { public static void main(String[] args) { int[] height = {2,8,3,4}; int area = maxContainer(height); System.out.println(area); } 阅读全文
posted @ 2020-04-19 12:33 冬马党 阅读(554) 评论(0) 推荐(0)
摘要: public class Client { public static void main(String[] args) { int i = 1625262; boolean palindromeNum = isPalindromeNum(i); System.out.println(palindr 阅读全文
posted @ 2020-04-19 10:45 冬马党 阅读(226) 评论(0) 推荐(0)
摘要: public static void main(String[] args) { int i = 9876; int num = caleReverseNum(i); System.out.println(num); } /** * 时间复杂度为n的位数 */ static int caleReve 阅读全文
posted @ 2020-04-19 10:10 冬马党 阅读(161) 评论(0) 推荐(0)
摘要: import java.util.*; public class Client { public static void main(String[] args) { String str = "abcdefghijk"; char[][] chars = strArr(str, 4); for (c 阅读全文
posted @ 2020-04-19 09:43 冬马党 阅读(302) 评论(0) 推荐(0)
摘要: 思路: 利用左右指针和map数据结构 求左右指针的最大间隔 遍历字符数组,如果在map中不存在,则右指针右移,并求最大长度 如果在map中存在,则左指针右移 import java.util.*; public class Client { public static void main(Strin 阅读全文
posted @ 2020-04-19 08:58 冬马党 阅读(379) 评论(0) 推荐(0)