IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 每日>...<LeetCode练习 -> 正文阅读

[数据结构与算法]每日>...<LeetCode练习

LeetCode 160

public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) {
 *         val = x;
 *         next = null;
 *     }
 * }
 */
public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
     ListNode l1=headA;	//用l1,l2两个结点记录headA,headB,便于编写
     ListNode l2=headB;
     while(l1!=l2){			
         l1=(l1==null)?headB:l1.next;	//当两个链表结点不为空时,都向后走
         l2=(l2==null)?headA:l2.next;	//到链表尾部时,就从另一个链表的头部又开始走
     }
      //两个结点这样走,总会有一时刻,使得l1==l2,此时退出循环,此结点为相交结点  
     return l1;
      
    }
}

LeetCode206

该递归过程在此不做详解,我会在另一篇博客中作出一定的分析?JAVA巨精简递归小谈>__<_m0_60010936的博客-CSDN博客

LeetCode206

public class ListNode {
     int val;
      ListNode next;
      ListNode() {}
     ListNode(int val) { this.val = val; }
     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
  }
 
	//递归法反转链表
class Solution1 {
    public ListNode reverseList(ListNode head) {
        if(head==null||head.next==null){  //递归结束条件
            return head;		  //结束即("递"的过程已结束)
        }					
        ListNode next=head.next;
        ListNode newHead=reverseList(next);
        next.next=head;//递的过程结束,跳到此处,开始进行"归"的过程
        head.next=null;
        return newHead;//返回新头结点			
    }
}

LeetCode 844

public boolean backspaceCompare(String S, String T) {
        int i = S.length() - 1, j = T.length() - 1;
        //skip记录两个字符串中的"#"
        int skipS = 0, skipT = 0;
        while (i >= 0 || j >= 0) {
            while (i >= 0) {
                //遇到字符是#
                if (S.charAt(i) == '#') {
                    skipS++;	//若遇见'#',skip+1
                    i--;	//从后往前遍历的顺序
                //已经遇到过#,且当前不为#
                } else if (skipS > 0) {
                    skipS--;	//若没有'#',skip-1
                    i--;	//继续向前遍历
                //没有遇到过#
                } else {	
                    break;	//若没有'#',即skip==0,退出	
                }
            }
		//与上同理
            while (j >= 0) {
                if (T.charAt(j) == '#') {
                    skipT++;
                    j--;
                } else if (skipT > 0) {
                    skipT--;
                    j--;
                } else {
                    break;
                }
            }  
            //走到这里是两个字符串中均无'#',则为false,因为题目要求必有#                       
            if (i >= 0 && j >= 0) {                   
                if (S.charAt(i) != T.charAt(j)) {      
                    return false;                             
                }                            		
            } else {                        		
                if (i >= 0 || j >= 0) {						
                    return false;					
                }						
            }					
            i--;						
            j--;				
        }		
        return true;		
    }							

LeetCode 28:

class Solution {
    public int strStr(String haystack, String needle) {
        int n = haystack.length(), m = needle.length();
        if (m == 0) {
            return 0;=
        }
        int[] pi = new int[m];
        for (int i = 1, j = 0; i < m; i++) {
            while (j > 0 && needle.charAt(i) != needle.charAt(j)) {
                j = pi[j - 1];
            }
            if (needle.charAt(i) == needle.charAt(j)) {
                j++;
            }
            pi[i] = j;
        }
        for (int i = 0, j = 0; i < n; i++) {
            while (j > 0 && haystack.charAt(i) != needle.charAt(j)) {
                j = pi[j - 1];
            }
            if (haystack.charAt(i) == needle.charAt(j)) {
                j++;
            }
            if (j == m) {
                return i - m + 1;
            }
        }
        return -1;
    }
}

?LeetCode 290:

class Solution {
    public boolean wordPattern(String pattern, String str) {
        Map<String, Character> str2ch = new HashMap<String, Character>();
        Map<Character, String> ch2str = new HashMap<Character, String>();
        int m = str.length();
        int i = 0;
        for (int p = 0; p < pattern.length(); ++p) {
            char ch = pattern.charAt(p);
            if (i >= m) {
                return false;
            }
            int j = i;
            while (j < m && str.charAt(j) != ' ') { //j走过的时一个完整的词语
                j++
            }					    //遇到' '即跳出
            String tmp = str.substring(i, j);	    //将一个完整的单词赋给tmp	
            if (str2ch.containsKey(tmp) && str2ch.get(tmp) != ch) {
                return false;			    //比较字符与串
            }
            if (ch2str.containsKey(ch) && !tmp.equals(ch2str.get(ch))) {
                return false;				//比较
            }
            str2ch.put(tmp, ch);
            ch2str.put(ch, tmp);
            i = j + 1;
        }
        return i >= m;
    }
}

  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2022-03-08 22:48:16  更:2022-03-08 22:50:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 13:38:42-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码