当前位置:网站首页>剑指offer基础版 ----- 第28天
剑指offer基础版 ----- 第28天
2022-07-31 05:09:00 【米兰的小红黑】

/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) {
val = x; }
* }
*/
public class Codec {
public String serialize(TreeNode root) {
return rserialize(root, "");
}
public TreeNode deserialize(String data) {
String[] dataArray = data.split(",");
List<String> dataList = new LinkedList<String>(Arrays.asList(dataArray));
return rdeserialize(dataList);
}
public String rserialize(TreeNode root, String str) {
if (root == null) {
str += "None,";
} else {
str += str.valueOf(root.val) + ",";
str = rserialize(root.left, str);
str = rserialize(root.right, str);
}
return str;
}
public TreeNode rdeserialize(List<String> dataList) {
if (dataList.get(0).equals("None")) {
dataList.remove(0);
return null;
}
TreeNode root = new TreeNode(Integer.valueOf(dataList.get(0)));
dataList.remove(0);
root.left = rdeserialize(dataList);
root.right = rdeserialize(dataList);
return root;
}
}
// Your Codec object will be instantiated and called as such:
// Codec codec = new Codec();
// codec.deserialize(codec.serialize(root));

class Solution {
List<String> rec;
boolean[] vis;
public String[] permutation(String s) {
int n = s.length();
rec = new ArrayList<String>();
vis = new boolean[n];
char[] arr = s.toCharArray();
Arrays.sort(arr);
StringBuffer perm = new StringBuffer();
backtrack(arr, 0, n, perm);
int size = rec.size();
String[] recArr = new String[size];
for (int i = 0; i < size; i++) {
recArr[i] = rec.get(i);
}
return recArr;
}
public void backtrack(char[] arr, int i, int n, StringBuffer perm) {
if (i == n) {
rec.add(perm.toString());
return;
}
for (int j = 0; j < n; j++) {
if (vis[j] || (j > 0 && !vis[j - 1] && arr[j - 1] == arr[j])) {
continue;
}
vis[j] = true;
perm.append(arr[j]);
backtrack(arr, i + 1, n, perm);
perm.deleteCharAt(perm.length() - 1);
vis[j] = false;
}
}
}
边栏推荐
- A complete introduction to JSqlParse of Sql parsing and conversion
- 分布式事务处理方案大 PK!
- With MVC, why DDD?
- 110 MySQL interview questions and answers (continuously updated)
- 太厉害了,终于有人能把文件上传漏洞讲的明明白白了
- Apache DButils使用注意事项--with modifiers “public“
- TOGAF之架构标准规范(一)
- 2022-07-30:以下go语言代码输出什么?A:[]byte{} []byte;B:[]byte{} []uint8;C:[]uint8{} []byte;D:[]uin8{} []uint8。
- ABC D - Distinct Trio (Number of k-tuples
- 限流的原理
猜你喜欢

matlab simulink欠驱动水面船舶航迹自抗扰控制研究

MySQL window function

Numpy中np.meshgrid的简单用法示例

Anaconda配置环境指令

Unity mobile game performance optimization series: performance tuning for the CPU side

DVWA之SQL注入

Linux系统安装mysql(rpm方式安装)

MySQL-Explain详解

Typec手机有线网卡网线转网口转接口快充方案

Interviewer: If the order is not paid within 30 minutes, it will be automatically canceled. How to do this?
随机推荐
docker安装postgresSQL和设置自定义数据目录
2022-07-30:以下go语言代码输出什么?A:[]byte{} []byte;B:[]byte{} []uint8;C:[]uint8{} []byte;D:[]uin8{} []uint8。
分布式事务——分布式事务简介、分布式事务框架 Seata(AT模式、Tcc模式、Tcc Vs AT)、分布式事务—MQ
matlab simulink欠驱动水面船舶航迹自抗扰控制研究
面试官:生成订单30分钟未支付,则自动取消,该怎么实现?
MySQL8.0.26安装配置教程(windows 64位)
tf.keras.utils.pad_sequences()
tf.keras.utils.get_file()
A complete introduction to JSqlParse of Sql parsing and conversion
Interviewer, don't ask me to shake hands three times and wave four times again
SQL injection of DVWA
The interviewer asked me TCP three handshake and four wave, I really
EasyExcel的简单读取操作
torch.normal函数用法
精解四大集合框架:List 核心知识总结
[Detailed explanation of ORACLE Explain]
[MQ I can speak for an hour]
数据集划分以及交叉验证法
mysql5.7.35安装配置教程【超级详细安装教程】
Centos7 install mysql5.7