当前位置:网站首页>剑指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;
}
}
}
边栏推荐
- Information System Project Manager Core Test Site (55) Configuration Manager (CMO) Work
- C语言教程(三)-if和循环
- With MVC, why DDD?
- pytorch中的一维、二维、三维卷积操作
- Typec手机有线网卡网线转网口转接口快充方案
- Duplicate entry 'XXX' for key 'XXX.PRIMARY' solution.
- 面试官:生成订单30分钟未支付,则自动取消,该怎么实现?
- MySQL (updating)
- Linux系统安装mysql(rpm方式安装)
- sql statement - how to query data in another table based on the data in one table
猜你喜欢

mysql使用on duplicate key update批量更新数据

MySQL transaction (transaction) (this is enough..)

面试官:生成订单30分钟未支付,则自动取消,该怎么实现?

MySQL optimization slow log query

再见了繁琐的Excel,掌握数据分析处理技术就靠它了

MySQL optimization: from ten seconds to three hundred milliseconds

MySQL_关于JSON数据的查询

Distributed transaction processing solution big PK!

Anaconda配置环境指令

MySQL-如何分库分表?一看就懂
随机推荐
Lock wait timeout exceeded解决方案
DVWA靶场环境搭建
剑指offer专项突击版 ---- 第 6 天
Flink sink redis 写入Redis
DVWA installation tutorial (understand what you don't understand · in detail)
CentOS7 安装MySQL 图文详细教程
MySQL(更新中)
STM32——DMA
MySQL_关于JSON数据的查询
mysql stored procedure
MySQL forgot password
Shell重油常压塔模拟仿真与控制
关于superset集成到自己的项目中
Multiple table query of sql statement
centos7安装mysql5.7
Typec手机有线网卡网线转网口转接口快充方案
SQL statement to range query time field
【ORACLE Explain 详解】
信息系统项目管理师核心考点(五十五)配置管理员(CMO)的工作
Redis Advanced - Cache Issues: Consistency, Penetration, Penetration, Avalanche, Pollution, etc.