重庆网站建设 观音桥,小程序免费制作平台360,可以制作什么网站,手机网站建设开什么类型的票算法目录只出现一次的数字#xff08;中等难度#xff09;java解答参考二叉树的层序遍历#xff08;难度中等#xff09;java 解答参考给表达式添加运算符#xff08;比较困难#xff09;java解答参考大家好#xff0c;我是小冷。 上一篇是算法题目 接下来继续看下算法题…
算法目录只出现一次的数字中等难度java解答参考二叉树的层序遍历难度中等java 解答参考给表达式添加运算符比较困难java解答参考大家好我是小冷。 上一篇是算法题目 接下来继续看下算法题目吧用Java解答可能更能激发一下大脑思考。 只出现一次的数字中等难度
题目要求 给你一个整数数组 nums 除某个元素仅出现 一次 外其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 示例 1 输入nums [2,2,3,2] 输出3 示例 2 输入nums [0,1,0,1,0,1,99] 输出99 提示 1 nums.length 3 * 104 -231 nums[i] 231 - 1 nums 中除某个元素仅出现 一次 外其余每个元素都恰出现 三次 根据题目要求和实例可分析有哪些步骤需要几个for循环。
进阶你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗
java解答参考
class Solution {public int singleNumber(int[] nums) {int ret 0;for (int i 0; i 32; i) {int bitnums 0;int bit 1 i;for (int num : nums) {if ((num bit) ! 0)bitnums;}if (bitnums % 3 ! 0)ret | bit;}return ret;}
}二叉树的层序遍历难度中等
题目要求 给你一个二叉树请你返回其按 层序遍历 得到的节点值。 即逐层地从左到右访问所有节点。
示例 二叉树[3,9,20,null,null,15,7],
3 / \ 9 20 / \ 15 7
返回其层序遍历结果 [ [3], [9,20], [15,7] ] java 解答参考
public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode(int x) {val x;}
}
class Solution {public ListListInteger levelOrder(TreeNode root) {ListListInteger l new ArrayList();QueueTreeNode q new LinkedListTreeNode();if (root ! null) {q.add(root);}while (!q.isEmpty()) {ListInteger l2 new ArrayList();int number q.size();while (number 0) {TreeNode t q.poll();l2.add(t.val);if (t.left ! null) {q.add(t.left);}if (t.right ! null) {q.add(t.right);}number--;}l.add(l2);}return l;}
}给表达式添加运算符比较困难
题目要求 给定一个仅包含数字 0-9 的字符串 num 和一个目标值整数 target 在 num 的数字之间添加 二元 运算符不是一元、- 或 * 返回所有能够得到目标值的表达式。
示例 1: 输入: num “123”, target 6 输出: [“123”, “123”] 示例 2: 输入: num “232”, target 8 输出: [“232, 232”] 示例 3: 输入: num “105”, target 5 输出: [“1*05”,“10-5”] 示例 4: 输入: num “00”, target 0 输出: [“00”, “0-0”, “0*0”] 示例 5: 输入: num “3456237490”, target 9191 输出: [] 提示 1 num.length 10 num 仅含数字 -231 target 231 - 1 java解答参考
class Solution {int n;String num;ListString ans;int target;public ListString addOperators(String num, int target) {this.n num.length();this.num num;this.target target;this.ans new ArrayListString();StringBuffer expr new StringBuffer();dfs(expr, 0, 0, 0);return ans;}public void dfs(StringBuffer sba, long sum, long prepareMultiply, int index) {StringBuffer sb new StringBuffer(sba);if (index n) {if (sum target) {ans.add(sb.toString());}return;}int sign sb.length();if (index 0) {sb.append(0);}long val 0;for (int i index; i n (i index || num.charAt(index) ! 0); i) {val val * 10 (num.charAt(i) - 0);sb.append(num.charAt(i));if (index 0) {dfs(sb, val, val, i 1);continue;}sb.setCharAt(sign, );dfs(sb, sum val, val, i 1);sb.setCharAt(sign, -);dfs(sb, sum - val, -val, i 1);sb.setCharAt(sign, *);dfs(sb, sum - prepareMultiply prepareMultiply * val, prepareMultiply * val, i 1);}}
}好了今天学习在这里小冷一直在技术路上前行…
昨天删去今天争取明天努力
需要资料的VX 搜索 小冷coding 关注或者点击下方名片扫码 获取