[8/9] M19/M22/M24/M31/M33/M34/M36
[8/9] M19/M22/M24/M31/M34
M19. Remove Nth Node From End of List
用时:20 mins
/*** Definition for singly-linked list.* 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 Solution {public ListNode removeNthFromEnd(ListNode head, int n) {ListNode dummy = new ListNode();dummy.next = head;ListNode first = dummy, second = dummy;int firstCount = 0, secondCount = 0;while(first.next != null) {first = first.next;firstCount++;if(firstCount >= n+1) {second = second.next;secondCount++;}}if(second.next != null) {ListNode toRemove = second.next;second.next = toRemove.next;}return dummy.next;}
}
M22. Generate Parentheses
用时:20 mins
class Solution {List<String> res = new ArrayList<>();public List<String> generateParenthesis(int n) {backTracking("", 0, 0, n);return res;}public void backTracking(String str, int open, int close, int max){if(str.length() == max*2) {res.add(str);return;} if(open<max) {backTracking(str+"(", open+1, close, max);}if(close<open) {backTracking(str+")", open, close+1, max);}}
}
M24. Swap Nodes in Pairs
用时: 15 mins
24. Swap Nodes in Pairs
/*** Definition for singly-linked list.* 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 Solution {public ListNode swapPairs(ListNode head) {if(head == null) return head;ListNode dummy = new ListNode();dummy.next = head;ListNode previous = dummy, next = null;ListNode first = head, second = head.next;while(first != null && second != null) {next = second.next;previous.next = second;second.next = first;first.next = next;if (first.next == null || first.next.next == null) break;previous = first; first = previous.next;second = first.next;}return dummy.next;}
}
M31. Next Permutation
class Solution {public void nextPermutation(int[] nums) {for (int i = nums.length -2; i>=0; i--) {if(nums[i+1] > nums[i]) {for(int j = nums.length -1; j>i; j--) {if (nums[j] > nums[i]) {swap(nums, i, j);reverse(nums, i+1);return;}}}}reverse(nums, 0);}public void swap(int[] nums, int i, int j) {int toSwap = nums[i];nums[i] = nums[j];nums[j] = toSwap;}public void reverse(int[] nums, int start){int i = start, j = nums.length-1;while(i<j) {swap(nums, i, j);i++;j--;}}
}
M33. Search in Rotated Sorted Array
class Solution {public int search(int[] nums, int target) {int start = 0, end = nums.length -1, mid = 0;while (start<=end) {mid = start + (end - start)/2;if(nums[mid] == target) return mid;if (nums[start] <= nums[mid]) {if( target <= nums[mid] && target >= nums[start]) {end = mid-1;} else {start = mid+1;}} else {if(target <= nums[end] && target >= nums[mid]) {start = mid+1;} else {end = mid -1; }}}return -1;}
}
M34. Find First and Last Position of Element in Sorted Array
class Solution {int[] res = new int[2];int rangeStart = -1, rangeEnd = -1;public int[] searchRange(int[] nums, int target) {int start = 0, end = nums.length -1, mid = 0; recurse(nums, target, start, end);res[0] = rangeStart;res[1] = rangeEnd;return res;}public void recurse(int[] nums, int target, int start, int end) {if (start<end) {int mid = start + (end -start)/2;if(nums[mid] == target) {recurse(nums, target, start, mid-1);recurse(nums, target, mid + 1, end);setValue(mid);} else if (target < nums[mid]){recurse(nums, target, start, mid-1);} else if (target > nums[mid]){recurse(nums, target, mid + 1, end);}} else if(start==end && nums[start] == target) {setValue(start);}}private void setValue(int val) {if(rangeStart != -1) {rangeStart = Math.min(val, rangeStart);} else {rangeStart = val;}rangeEnd = Math.max(val, rangeEnd);}
}
M36. Valid Sudoku
public class Solution {public boolean isValidSudoku(char[][] board) {HashMap<Integer, Integer> [] rows = new HashMap[9];HashMap<Integer, Integer> [] columns = new HashMap[9];HashMap<Integer, Integer> [] boxes = new HashMap[9];for(int i = 0; i<9; i++) {rows[i] = new HashMap<Integer, Integer>();columns[i] = new HashMap<Integer, Integer>();boxes[i] = new HashMap<Integer, Integer>();}for(int i = 0; i<9; i++) {for(int j = 0; j<9; j++) {char num = board[i][j];if (num == '.') continue;System.out.println("num:"+num + ":");int n = (int)num;rows[i].put(n, rows[i].getOrDefault(n, 0) + 1);columns[j].put(n, columns[j].getOrDefault(n, 0) + 1);System.out.println(":"+n + ":");System.out.println(columns[j].get(n));int boxIndex = (i/3) * 3 + (j/3);boxes[boxIndex].put(n, boxes[boxIndex].getOrDefault(n, 0) + 1);if(rows[i].get(n) >1 || columns[j].get(n) > 1 || boxes[boxIndex].get(n) >1) return false;}}return true;}
}
[8/9] M19/M22/M24/M31/M33/M34/M36相关推荐
- iOS动画 三维透视投影 m34
transform的结构如下: struct CATransform3D { CGFloat m11, m12, m13, m14; CGFloat m21, m22, m23, m24; ...
- 纯python统计基于orthofinder得到的系统发育树的关注点位置的树型结构
对于某一个物种或某类物种在整个系统发育树中的位置存在一定争议的情况,使用直系同源基因构建单基因树,并对该物种或该类物种所在结构进行统计是可以对争议起到一定的解决作用的,在此留下全套流程和大家交流. 主 ...
- [WorldWind学习]17.视域调度(视域体裁剪)
视域调度(视域体裁剪) 在WW中用户改变自己的的视角,纹理影像和高程会动态加载,在视野范围内的影像和DEM显示,超出视域范围的瓦片则不显示.不仅是瓦片,太阳.大气网格.三维模型ModelFeature ...
- (转) Core Animation 简介
原文出处:(http://hi.baidu.com/zijian0428/blog/item/6085e5fe8ff987225d60083b.html) 1. 简介 Core animatio ...
- iOS CoreAnimation
为什么80%的码农都做不了架构师?>>> 前言:这篇文章太全了,忍不住就转了,原地址 CoreAnimation,另外前面写过一篇简单的动画IOS简单动画 核心动画,开发人员可 ...
- CoreAnimation编程指南(三)几何变换
本章介绍图层的几何组成部分,及他们之间的相互关,同时介绍如何变换矩阵可以产生复杂的视觉效果. 一.图层的坐标系 1.图层的坐标系在不同平台上面具有差异性.在iOS系统中,默认的坐标系统原点在图层的中心 ...
- iOS动画:带时分秒指针的时钟动画(上)
经过几次实验,发现如果分享的文章能构成系列,效果会非常好.同时自己也能收获很大,能够整块整块的复习,也能够帮助自己更深入的块状学习知识.对自己梳理线条,整理知识体系作用非常大. 所以这次还是打算用这种 ...
- CoreAnimation-CATransform3D特效
关于图层的几个坐标系. 对于ios来说,坐标系的(0,0)点在左上角,就是越往下,Y值越大.越往右,X值越大. 一个图层的frame,它是position,bounds,anchorPoint和tra ...
- CATransform3D 特效详解
看了一篇关于CATransform3D 特效详解 记录一下 以后慢慢看 关于图层的几个坐标系. 对于ios来说,坐标系的(0,0)点在左上角,就是越往下,Y值越大.越往右,X值越大. 一个图层的 ...
最新文章
- nessus安装后进不去了_Centos7安装图形化界面
- 修改xampp的mysql默认密码
- 高通暂时不会针对物联网打造专属处理器
- 学习Linux就业前景如何?五大就业岗位!
- react控制元素的显示或隐藏
- Hadoop入门基础教程 Hadoop之完全分布式环境搭建
- 音乐 美术 计算机期末考试表,2021东莞中考音乐美术信息技术合格性考试时间安排...
- 738. 单调递增的数字(JavaScript)
- 基本的正则表达式符号 【】
- ArrayList和LinkedList的插入删除性能差距到底有多大
- 汇编实验 用Radasm设计生成一个对话框,实现如图1.1所示的四则运算计算器
- 如何使用计算机管理员账户密码是什么意思,电脑管理员密码是什么
- indesign怎么拼图_【英语陪玩33】 拼图 Jigsaw Puzzle
- C/C++ tip: How to detect the operating system type using compiler predefined macros
- 如何消除文法二义性、如何判断二义文法—编译原理
- 如何用手机APP实现PLC远程监控
- 原码、反码、补码和真值
- 2018推荐的android手机,2018年7月份Android手机性价比排行榜
- C# 6 与 .NET Core 1.0 高级编程 - 41 ASP.NET MVC(上)
- [uboot] (第一章)uboot流程——概述
热门文章
- Office 2010 激活提示网络连接错误,错误代码0*80072F8F(及其他问题)的解决办法
- 使用adblock的高级自定义过滤器, 来过滤包含特定文字的html元素
- 安全扫描失败无法上传_重要通知丨开始上传!学院奖2020春季征集活动作品上传通道已经开启了!...
- C语言单相智能电表课程设计,单相单用户电能表的计_课程设计.doc
- ssm+JSP计算机毕业设计基于Java的藏文学习软件n61lu【源码、程序、数据库、部署】
- 迅为IMX8MM开发板Yocto系统使用Gstarwmra播放音频和视频
- Eigen 内存对齐
- 【微服务架构】在微服务架构中最小化设计时间耦合
- 表白php制作教程视频,最具创意表白视频制作教程
- 浏览器判断是否全屏, 设置浏览器全屏,设置浏览器退出全屏