由买买提看人间百态

topics

全部话题 - 话题: printlist
(共0页)
G**********s
发帖数: 70
1
------------ LEVEL ZERO -----------------
Node *head = new Node(3);
Node *p = head;
p = new Node(4);
0.a) printList(head);
3
0.b) printList(p);
4
------------ LEVEL ONE ------------------
Node *head = new Node(3);
Node **p = &head;
*p = new Node(4);
1.a) printList(head);
4
1.b) printList(*p);
4
------------ LEVEL TWO ------------------
Node *head = new Node(3);
Node **p = &head;
*p = new Node(4);
*p = (*p)->next;
2.a) printList(head);
null
2.b) printList(*p);
null
------------ LEVEL THREE ------... 阅读全帖
s*w
发帖数: 729
2
来自主题: JobHunting版 - [leetcode] merge k lists 求助
不知道为啥,我的 heap 时灵时不灵的?请看下面的 code 和输出显示
#include
#include
#include
using namespace std;
struct ListNode {
int val;
ListNode *next;
ListNode(int v):val(v),next(NULL) {}
};
bool minHeapPredicate(ListNode* lhs,ListNode* rhs) {
return lhs->val > rhs->val;
}
class Solution {
public:
ListNode *mergeKLists(vector lists) {
ListNode *retHead = NULL, *retTail = NULL;
// store values and nodes into heap
vector ... 阅读全帖
i*******6
发帖数: 107
3
来自主题: JobHunting版 - amazon onsite 面经
#5.输入一个linkedlist和一个数字例如:9->7->8->6->1->2 和 3,输出还是一个
linkedlist但是每三个数reverse一下,例如8->7->9->2->1->6。
扩展了这道题,写成可以自己设置每几个数reverse一下。
思路大概是这样,一个原始链表为
0->1->2->3->4->5->6
如果每3个数反转一下的话,那么先把5指向0,6指向3,2指向null (换言之则是把第kn
个节点指向(k-2)*n+1个节点,再把第n个节点指向null),可以得到
6->3->4->5->0->1->2
然后把整个链表反转就是我们要的结果:
2->1->0->5->4->3->6
附上java代码和数据结构,以及测试用例,在netbeans5.5测试通过:
class ListElement{
public ListElement next;
public int data;
public ListElement(){

}
public ListElement(int data){
th... 阅读全帖
q********c
发帖数: 1774
4
来自主题: JobHunting版 - leetcode上一题,求正解
帖个我写的,欢迎指正。
void getCandidates(int data[], int size, int sum)
{
vector list;
for(int i = 0; i < size; ++i) {
list.clear();
getSums(data, size, i, sum, list);
}
}
void getSums(int data[], int size, int start, int k, vector& list)
{

if(k == 0)
printList(list);
else if(k < 0)
return;
else{
list.push_back(data[start]);
k = k - data[start];
for(int j = start; j < size; ++j) {
if(k == data[... 阅读全帖
b******p
发帖数: 49
5
来自主题: JobHunting版 - leetcode上的Sort List那道题
我来贴个CPP的(注意:以下有乱七八糟的code……)
合并排序确实比较好用,我还在写第一遍leetcode,代码风格也比较乱,带了很多
debug code,还带了测试用例,试了9次才通过…
有一些多边界条件需要判断的。我的方法是加很多debug,或加很多assertion(我做别
的题里面经常用assertion……不知道是不是好习惯)
============================
#include
#include
using namespace std;
/*
Merge sort ?
*/
// Start: 22:40
// End: 23:45 用了一个小时
//Definition for singly-linked list.
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
#define TOMMYDBG
class Solution {
public:
... 阅读全帖
k******r
发帖数: 2300
6
我写了个实现,但远没有完整,你自己补充。如果我有时间加上心情好,我可能写个完
整的,随手写的,没太经过大脑,所以欢迎大家指正。
template
class Node
{
public:
Node(Node* next=NULL, T data=T()) : _next(next), _data(data)
{
}
Node* _next;
T _data;
};
template
class SLinkedList
{
public:
SLinkedList()
{
head = NULL;
}
void AddNode(T value)
{
Node* node = new Node;
node->_next = NULL;
node->_data = value;
if(!head)
{
head = node;
... 阅读全帖
B*******1
发帖数: 2454
7
来自主题: JobHunting版 - 探讨IT大公司的hiring bar?
How about this:
void printlist(vector &result)
{
for (int i = 0; i < result.size(); i++)
cout << result[i]->element << " ";
cout << " " << endl;
}
void FindPaths_sum(Node_t* root,int curSum, int target, vector &v)
{
if(root==NULL) return;

curSum += root->element;
if (curSum == target)
printlist(v);

v.push_back(root->left);
FindPaths_sum(root->left,curSum ,target, v);
v.pop_back();
v.push_back(root->right);
FindPaths_sum(ro... 阅读全帖
a******e
发帖数: 710
8
来自主题: JobHunting版 - 狗狗家onsite面经
开始只是想到了O(n)的算法。 O(m)的算法可以这么实现
#include
#include
using namespace std;
struct DListNode {
char val;
DListNode *prev;
DListNode * next;
DListNode(char v): val(v), prev(nullptr), next(nullptr) {}
};
void printList(DListNode* head){
while (head!=nullptr) {
cout<val<<", ";
head = head->next;
}
cout< }
void printSet(unordered_set &s) {
for (auto iter=s.begin(); iter!=s.end(); ++iter)
cout<<(*ite... 阅读全帖
f****e
发帖数: 923
9
class ListNode{
int val;
ListNode next;
ListNode(int val){
this.val = val;
}
}
class Solution{
public int live(int n, int k){
ListNode head = new ListNode(1);
ListNode node = head;
for(int i = 2; i <= n; i++){
node.next = new ListNode(i);
node = node.next;
}
node.next = head;
System.out.println("before remove");
printList(head);
System.out.println("removing the nodes");
whi... 阅读全帖
i**********e
发帖数: 1145
10
These are some original pointer problems from me. Try to solve without a
compiler's help. Post your answers here by replying to this post.
Assume you have the following linked list defined as:
struct Node {
Node(int x) : val(x), next(NULL) {}
int val;
Node *next;
};
And you have a printList function which prints out the content of a list.
What are the outputs for the following code segments?
g*********8
发帖数: 64
11
来自主题: JobHunting版 - 探讨IT大公司的hiring bar?
楼主的第一道题我写的是这样
void FindPaths_sum(tNode* root,int sum, vector v){
if(root==NULL) return;

v.insert(v.begin(),root->value);

int tmp=sum;
vector left=v,right=v;

for(int i=v.size()-1;i>=0;i--){
tmp-=v[i];
if(tmp==0){

Printlist(v,i);

}
}
FindPaths_sum(root->left,sum,left);
FindPaths_sum(root->right,sum,right);
}
第二道题:priority_queue不就是heap吗?这个stl不是有定义吗?
priority_queue,... 阅读全帖
p*****2
发帖数: 21240
12
来自主题: JobHunting版 - 探讨IT大公司的hiring bar?
void FindPaths_sum(tNode* root,int sum, vector v){
if(root==NULL) return;

//why insert at beginning? is it efficient?
v.insert(v.begin(),root->value);

int tmp=sum;
//Do you have to declare left and right?
vector left=v,right=v;

for(int i=v.size()-1;i>=0;i--){
tmp-=v[i];
if(tmp==0){

Printlist(v,i);

}
}
FindPaths_sum(root->left,sum,left);
FindPaths_sum(root->right,sum,right);
}
(共0页)