- 博客(11)
- 收藏
- 关注
原创 字符串算法基础1
这道题挺简单的:定义左指针left指向列表第一个元素(索引 0),右指针right指向列表最后一个元素(索引len(s)-1:在的条件下,循环交换left和right指针指向的元素(用临时变量tmp暂存值完成交换)。:每次交换后,左指针右移一位(left += 1),右指针左移一位(right -= 1),直到两指针相遇 / 交叉(),此时列表已完全反转。
2026-02-12 20:36:53
638
原创 哈希表算法基础2
参考我们之前做过的两数之和,四数之和为 0 可以等价转换为:基于这个等式,我们可以把问题拆成两步:为什么两数之和可以用数组存,这个就要用map?不可控的范围就用map存在vuale+1,不存在存入的部分代码可优化;存在则累加对应的值也可优化。Java中不同数据类型获取长度的规则
2026-02-11 18:44:21
1053
原创 哈希表算法基础1
核心是「异位词排序后必相等」:核心是「统计字符出现次数,抵消后验证全为 0」:排序法的时间复杂度是O(nlogn),字符计数法是O(n),但用数组的字符计数法的缺点是仅适用于已知的固定范围的字符的场景,一旦字符超出预设范围,数组就无法覆盖,因此需要调整数组长度或改用更灵活的哈希表,恰好就适用于本题。实现不复杂,但需要注意如何获取字符,如何字符转数值 Java 中, 本质上是 16 位整数,可以直接做减法; Python 中,字符串是不可变的,所以需要用 显式地把字符转成整数再计
2026-02-10 19:36:00
1195
原创 链表算法基础2
cur:游标节点,初始指向dummy(始终指向 “待交换组的前驱”);a:当前组第一个待交换节点(cur.nextb:当前组第二个待交换节点(
2026-02-09 21:16:10
815
原创 链表算法基础1
2.移除操作,让head.next=head.next.next即可,用java和python写的话完全不用考虑c++的内存管理问题3.注意判断的是head.next.val是否等于目标值,这样才能进行删除的操作,因为head.next=head.next.next是删除的head.next,没有办法直接删除head.4.语法区别python中只有is not None,java中的null是小写温习:python类的构造方法,不加val和next就是无参构造方法;
2026-02-08 18:43:33
831
原创 数组算法基础2
很容易就想到暴力解法,一个for循环控制起始位置,一个for循环控制终止位置暴力解法的思想是固定一个起始位置,终止位置从起始位置开始依次往后遍历,直到sum>=target;往后移一个起始位置,终止位置再从这个起始位置开始依次往后遍历......这就会产生很多不必要的步骤,比如起始位置向后移动一个之后,终止位置有时候不必从j=i开始;在终止位置不变的时候,起始位置有时可以向后移动好几个。
2026-02-07 10:48:06
444
原创 Java和python中的for用法
增强for循环:也叫 “foreach 循环”,是简化版的 for 循环,,适合 “只需要遍历元素,不需要操作索引” 的场景。用法1基于迭代器遍历可迭代对象。
2026-02-04 17:58:29
247
原创 Java基础复习
类是对象共同特征的描述,对象是真实存在的具体东西1.类类是 Java 面向对象编程的,你可以把它理解成一个。它定义了某一类事物共有的属性(数据)和行为(方法),但本身不代表具体的事物。2.对象对象是根据类这个模板,是类的 “实体化”。一个类可以创建无数个对象,每个对象都拥有类定义的属性和行为,但属性值可以不同。3.封装,目的是保证数据的安全性和代码的可维护性。实现步骤privatepublicgetXxx()setXxx()setXxx()4.标准的javabean类。
2026-02-02 21:21:11
885
原创 数组算法基础
且两次for循环的终止条件都是<size而不是nums.length,因为需要移动时,是先移动后size减,在size减的时候,后面需要判断的元素早已移动到了前面。int[] a = new int[nums.length] 注意创建新数组时,长度为nums.length,不是nums.length-1,虽然数组最后一位的索引是nums.length-1。(3)右指针左移 比较-2的平方和1的平方,4>1,a[ , , 4, 9, 25][-5,-2,0,1,3] 创建新数组a[ , , , , ]
2026-01-18 22:18:35
827
原创 数组基础语法(Python+Java)
数组是存放在连续内存空间上的相同类型数据的集合。数组可以方便的通过下标索引的方式获取到下标对应的数据,因为数组在内存空间的地址是连续的,所以我们在删除或者增添元素的时候,要移动其他元素的地址。C++中二维数组在地址空间上是连续的,像Java是没有指针的,同时也不对程序员暴露其元素的地址,寻址操作完全交给虚拟机。
2026-01-18 00:46:39
93
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅