Question:
Given a digit string, return all possible letter combinations that the number could represent.
A mapping of digit to letters (just like on the telephone buttons) is given below.
Input:Digit string "23" Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
Note:
Although the above answer is in lexicographical order, your answer could be in any order you want.
方法:
标准的DFS算法,比较tricky的地方在于看似两层的循环(数字加字母表)可以利用参数合并成一个for-loop的遍历。
另外,char[][] matrix巧妙地替代了HashMap<Integer, LinkedList<Character>>,神来之笔。
Code:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode removeNthFromEnd(ListNode head, int n) {
// Start typing your Java solution below
// DO NOT write main() function
int len = 0;
ListNode cur = head;
while(cur != null){
len++;
cur = cur.next;
}
if(len == n) return head.next;
ListNode pre = head;
for(int i=1; i<(len-n); i++) pre = pre.next;
pre.next = pre.next.next;
return head;
}
}
总结:
标准的DFS,精彩之处在于matrix的巧妙运用。