hello大家好呀,本博客目的在于记录暑假学习打卡,后续会整理成一个专栏,主要打算在暑假学习完数据结构,因此会发一些相关的数据结构实现的博客和一些刷的题,个人学习使用,也希望大家多多支持,有不足之处也请指出,谢谢大家。
一,二叉搜索树与双向链表
二叉搜索树与双向链表_牛客题霸_牛客网
思路:要点在于题目所给的中序遍历,先找到树最左边节点进行操作,我们把节点左孩子指针当做双向链表前指针,另一个当作后指针,问题的关键在于如何对节点进行操作,这里采用运用一个全局变量一步一步记录root节点的前一个节点,并进行操作最后,最后找到双向链表的最左边节点即可
import java.util.*;
/**
public class TreeNode {int val = 0;TreeNode left = null;TreeNode right = null;public TreeNode(int val) {this.val = val;}}
*/
public class Solution {TreeNode pre=null;public TreeNode Convert(TreeNode pRootOfTree) {if(pRootOfTree==null){return null;}CreatTree(pRootOfTree);
//开始找头while(pRootOfTree.left!=null){pRootOfTree=pRootOfTree.left;}return pRootOfTree;}
//构建链表,中序遍历private void CreatTree(TreeNode root){if(root==null){return ;}CreatTree(root.left);root.left=pre;if(pre!=null){pre.right=root;}pre=root;CreatTree(root.right);}
}
二,字符转小写
. - 力扣(LeetCode)
非常简单,注意尽量别用库方法
class Solution {public String toLowerCase(String s) {char[] ch=s.toCharArray();for(int i=0;i<ch.length;i++){if(IsUp(ch[i])){ch[i]+=32;}}return String.valueOf(ch);}public boolean IsUp(char c){if(c>='A'&&c<='Z'){return true;}return false;}
}
三,字符中的单词数
. - 力扣(LeetCode)
思路:可以把问题抽象为 遇到ch[i]是空格,ch[i+1]不是空格,就统计一个单词, 然后特别处理一下第一个字符不是空格的情况
class Solution {public int countSegments(String s) {int count = 0;char[] ch=s.toCharArray();for (int i = 0; i < ch.length; i++) {if (i == 0 && ch[i] != ' ') {count++;}if (i + 1 < ch.length && ch[i] == ' ' && ch[i + 1] != ' ') {count++;}}return count;}
}
今天的博客就到这里,谢谢大家