真的是从零开始,以前只有点java基础,希望可以做到一天一题
看错题了,没有看到是两个数相加,解了大半天;
昨天落了一天
还是没解出来哈哈哈哈
小垃圾真呀真垃圾
ListNode fake = new ListNode(0);
ListNode p = fake;
p相当于一个游标,fake为了找到头节点
1、判断字符串是否包含重复字符
public static boolean hasDuplicateChar2(String str) {
/* 判断一个字符最后一次出现的位置和当前位置是否相同,如果字母重复 则不相同,反之相同 */
for (int i = 0; i < str.length(); ++i) {
char ch = str.charAt(i);
if (str.lastIndexOf(ch) != i) {
return true;
}
}
return false;
}
2、ascii码字符只有128种取值的特性
3、学会用游标和哈希表哝
依然很暴力
double z = (double) y/x;
依然很暴力,不过也过了,感觉还是能粘贴出来炫耀一下的
public String longestPalindrome(String s) {
int n = s.length();
char[] str = s.toCharArray();
if (n == 0 || n == 1) return s;
int max = 1; int left = 0; int right = 0;
for (int i = 0; i < n; i++) {
int l = i; int r = i;
while (0<=l && r<n){
if (str[l] == str[r]){
l--;r++;
}else break;;
}
if (max < r-l+1){
max = r-l+1; left=l+1; right=r-1;
}
l = i; r = i+1;
while (0<=l && r<n){
if (str[l] == str[r]){
l--;r++;
}else break;;
}
if (max < r-l+1){
max = r-l+1; left=l+1; right=r-1;
}
}
return s.substring(left,right+1);
}
rev >= Integer.MAX_VALUE || rev <= Integer.MIN_VALUE
没有考虑一些情况,不过最后做出来了
网上看看别人的方法似乎更简单
没做出来看得答案,复制粘贴一个最有意思的
public boolean isMatch(String s, String p) {
return s.matches(p);
}
做题的时候还是要多考虑考虑递归或者动态规划
左右指针一滑动就可以做出来了
用纯暴力的方法做出来的
1、字符串的比较不能用==,要用equals()
2、取字符串子串,.substring(i,j),只能取到i到j-1的字符串
3、有多种选择的时候可以用switch啊
纯暴力,没有考虑很多种情况:
1、当字符串数组只有一个元素的情况没有考虑
2、当后面元素比前面元素长度小的方法没有考虑
没做出来 一直都是 timeout
应该是list判断是否contain浪费了很长时间
高兴 一次通过了
自己的解法,跑过了100%的其他解法
class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
ListNode p = head;
int i = 0;
while (p != null){
p = p.next; i++;
}
if (i == 1 && n == 1) return head.next;
if (i == n) return head.next;
p = head;
int j = 0;
while (p != null && j < i-n-1){
p = p.next; j++;
}
p.next = p.next.next;
return head;
}
}
用栈解决了
只不过单数情况未考虑
看了别人的答案,自己的做法还是太复杂了
一次做出来一次通过!
我没做出来
将set转化为list的方法
Set<String> resultSet = new HashSet<>();
List<String> result = new ArrayList<>();
result.addAll(resultSet);
借用21题解了出来
解出来了
return haystack.indexOf(needle);
一句话解出来了
不清楚题目用意
^ java中的异或
要用位运算不然会超时
还要考虑到int溢出的问题
总之我没做出来
感觉自己做的很麻烦不过还是做出来了
做是做出来了
Arrays.binarySearch(nums, target);(不一定返回的是第一次出现的位置)
数组循环、判断,第一步判断index是否溢出
一遍做出来了,但是做法有点麻烦
明显不是O(n), 也给我通过了,很奇怪
没做出来看网上答案补的
没做出来看网上答案补的
还是应该抽空学习一下动态规划
dfs 全排列 全文背诵
哇 先沿对角线翻转 在沿中垂线折叠 哪个天才想出来的
气死,坐半天还是个超时
真让人无语,这题就纯纯搁那里卡bug呗
善用二分、善用递归、善用 System.out.println(Integer.MAX_VALUE); System.out.println(Integer.MIN_VALUE);
做是做出来了,真困难啊
思考的太复杂,用的递归,timeout
//按数组头元素升序排序(lambda表达式排序是真的慢)
//Arrays.sort(intervals, (a, b) -> a[0] - b[0]);
Arrays.sort(intervals, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o1[0] - o2[0];
}
});
// 列表转数组
itvs.toArray(new int[0][]);
& 是按位运算
System.arraycopy的函数原型是:
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
其中:src表示源数组,srcPos表示源数组要复制的起始位置,desc表示目标数组,destPos在目标数组开始赋值的位置,length表示要复制的长度。
杨辉三角
如何逆转一个字符串
String rev = new StringBuffer(actual).reverse().toString();
判断一个char是字母和数字吗?
Character.isLetterOrDigit(cHead)
能看懂答案,但是自己绝对做不出来!!!
用异或来消除两个相同的数字,太妙了
快慢指针,一个一次走一步,一个一次走两步,如果有环的话,二者总会相遇,太奇妙了
基于 LinkedHashMap 实现
用暴力没有做出来,查的网络上的答案
1、java中的栈
Stack<ListNode> stack = new Stack<ListNode>();
暴力,一下就通过了,只不过runtime就很可怜的
1、获得字符串中一个数组的位置indexOf(),没有返回0
2、获得字符串的第几个位置的字符charAt()
3、删除字符串temp位置的字符
magazine = magazine.substring(0,temp) + magazine.substring(temp+1);
4、flag[ch1[i] - 97]-- == 0 先比较再–
5、‘a’-97=0
一遍过
依然暴力
1、将字串 String 转换成整数 int
1-1、 int i = Integer.parseInt([String]); 或 i = Integer.parseInt([String],[int radix]);
1-2、 int i = Integer.valueOf(my_str).intValue();
注: 字串转成 Double, Float, Long 的方法大同小异.
2、 如何将整数 int 转换成字串 String ?
2-1、String s = String.valueOf(i);
2-2、String s = Integer.toString(i);
2-3、String s = “” + i;
快慢指针做出来了
昨天看了大半天没做出来,主要是不会带序号的比较
1、定义比较方法,r1[1], r2[1]返回负数,降序排列;r2[1], r1[1]返回正数,升序排列
Arrays.sort(info, (r1, r2) -> r1[1] != r2[1] ? Integer.compare(r1[1], r2[1]) : Integer.compare(r1[0], r2[0]));
2、>>,右移运算符的优先度小于+ -
3、输出一维数组、二维数组,Arrays.toString
感觉一点点都不难
周一 | 周二 | 周三 | 周四 | 周五 | 周六 | 周日 | 总计 |
---|---|---|---|---|---|---|---|
Day1 220913 6 | Day2 220914 2 | Day3 220916 1 | Day4 220917 2 | 13 | |||
Day5 220919 2 | Day6 220920 1 | Day7 220921 1 | Day8 220922 1 | Day9 2209023 1 | Day10 220924 2 | Day11 220925 1 | 9 |
Day 12 220926 1 | Day 13 220927 1 | Day 14 220928 1 | Day 15 220929 3 | Day 16 220930 1 | Day 17 221001 1 | Day 18 221002 1 | 9 |
Day 19 221003 1 | Day 20 221004 1 | Day 21 221005 1 | Day 22 221006 1 | Day 23 221008 1 | Day 24 221009 1 | 6 | |
Day 25 221010 2 | Day 26 221011 2 | Day 27 221012 2 | Day 28 221013 2 | Day 29 221014 2 | Day 30 221015 2 | Day 31 221016 2 | 14 |
Day 32 221021 1 | Day 33 221022 7 | Day 34 221023 2 | 10 | ||||
第43周 20221024 | Day 35 221028 2 | 2 | |||||
第44周 20221031 | 0 | ||||||
第45周 20221107 | 0 | ||||||
第46周 20221114 | 0 | ||||||
第47周 20221121 | 0 | ||||||
第48周 20221128 | 0 | ||||||
第49周 20221205 | Day 36 221206 4 | Day 37 221207 12 | Day 38 221208 10 | ||||
碎碎念